| Autor | Správa |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: So 12.11.11 12:04 |   |
Poradí mi niekto prosím, ako mám spraviť, aby sa do input text (html) dali zadávať len čísla od 0-9 a čiarka (,), ale tak, aby sa čiarka nedala zadať viac krát za sebou (teda aby medzi čiarkami bolo vždy nejaké číslo). Napr.: 10,1250,140,1250.
Teda, aby nemohol nastať napríklad takýto prípad: 10,1250,,140,1250.
Za rady vopred ďakujem. |
| |
  |
 |
walther
 Užívateľ
 Založený: 24.01.2008 Príspevky: 10194 Bydlisko: Bratislava Vek: 24
 | Zaslal: So 12.11.11 12:53 |   |
ideálne tak, že priradíš danému inputu masku cez javascript a ošetríš vstup následne aj v code behinde, aby si mal istotu, že sú dáta v správnom formáte (javascript sa dá kedykoľvek vypnúť!)
tu je napr. pekný zoznam skriptov
http://www.webresourcesdepot.com/javascript-input-masks/ |
| |
  |
 |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: So 12.11.11 14:23 |   |
Dá sa to spraviť s maskou, tak aby som mohol zadávať čísla akejkoľvek dlížky? Napr. 10000000,200,115,0,1,33,20 |
| |
  |
 |
walther
 Užívateľ
 Založený: 24.01.2008 Príspevky: 10194 Bydlisko: Bratislava Vek: 24
 | Zaslal: So 12.11.11 15:53 |   |
Hmm, keď tak nad tým uvažujem, tak masku v tomto prípade ani nepotrebuješ. Stačí javascriptom pri písaní/po dopísaní kontrolovať vstup a podľa situácie vykonať akciu (napr nepovoliť iné znaky ako 0-9) |
| |
  |
 |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: So 12.11.11 16:58 |   |
Tak konkrétne mám takýto kód. Sú povolené len znaky 0-9 a čiarka. Čo tam mám pridať, aby sa nedala dať čiarka dva krát za sebou, ale len za číslom?
| kód: |
<SCRIPT language=Javascript>
<!--
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 44)
return false;
return true;
}
//-->
</SCRIPT>
<INPUT id="txtChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar"> |
|
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 |
Pridať tam test na regulárny výraz:
patern.test(elem.value) |
| |
    |
 |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: Po 14.11.11 10:11 |   |
Vedel by si to tam aj zakomponovať, lebo ja sa v JS moc nevyznám. |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Po 14.11.11 14:06 |   |
Toto daj za to prve return false.
patern=/,,/;
if(patern.test(document.getElementById('txtChar').value){ return false; } |
| |
    |
 |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: Po 14.11.11 15:06 |   |
Skúsil som to takto, ale nejde to.
| kód: | <SCRIPT language=Javascript>
<!--
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 44){
return false;
patern=/,,/;
if(patern.test(document.getElementById('txtChar').value){ return false; }
}
return true;
}
//-->
</SCRIPT>
<INPUT id="txtChar" onkeypress="return isNumberKey(event)" type="text" name="txtChar">
|
|
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Po 14.11.11 15:19 |   |
Nie, ten patern patrí do vlastnej if vetvy, nie do tej predošlej. Napísal som, že to máš dať za ten return, ale nenapísal som, že ta máš dopĺňať zátvorky... |
| |
    |
 |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: Po 14.11.11 15:28 |   |
Mohol by si prosím napísať celý ten skript ako to bude vyzerať a tušim tam chýba zátvorka. |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Po 14.11.11 15:34 |   |
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 44){ return false; }
patern=/,,/;
if(patern.test(document.getElementById('txtChar').value){ return false; }
return true;
}
Možno tam je aj nejaká chyba odo mňa, neskúšal som to... |
| |
    |
 |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: Po 14.11.11 15:49 |   |
Nefunguje to. Ide to tak isto ako predtým. |
| |
  |
 |
camo
 Zablokovaný užívateľ
 Založený: 05.09.2009 Príspevky: 1176 Bydlisko: Lehota pod Vtáčnikom
 | Zaslal: Po 14.11.11 16:15 |   |
No máš pravdu nefunguje to. Keypress nemá k dispozícii hodnotu, ktorú potrebuješ testovať.
Také najjednoduchšie riešenie by bolo:
| kód: | function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 44){ return false; }
patern=/,,/;
if(charCode == 44 && patern.test(document.getElementById('txtChar').value+',')){ return false; }
return true;
}
|
Ale dá sa to ľahko obísť ak nastavíš kurzor na čiarku, ktorá by bola niekde pred koncom reťazca, tak môžeš pridať ďalšiu... Teraz sa mi nechce to riešiť. Asi lepšie by bolo to urobiť ako písal Walter, že po ukončení písania skontoluješ value oproti regulárnemu výrazu a prípadne zabrániš odoslaniu a vypíšeš nejakú hlášku o tom, že si tam našiel dve čiarky za sebou... |
| |
    |
 |
lukas15
 Užívateľ
 Založený: 10.11.2011 Príspevky: 16
 | Zaslal: Po 14.11.11 17:20 |   |
Takže spravil som to takto:
| kód: |
function valid(){
if(document.search.wavenumber.value == 'xxxx'){
alert ('Zadali ste nesprávny formát pri zadávaní frekvencie!!!');
return false;
}
}
<form action = "stranka" method = "post" name = "search" onsubmit="return valid()" >
<input type = "text" name = "wavenumber" onkeypress="return isNumberKey(event)" />
<input class = "submit" type = "submit" name = "submit" value = "Hľadať"/>
</form>
|
akú podmienku mám dať za xxxx aby sa nedali zadať (,,) a aby nebola na konci zapisu čiarka |
| |
  |
 |
|