Stránka: 1 z 1
| [ Príspevkov: 21 ] | |
| Autor | Správa |
|---|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
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.
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14571 Témy: 66 | 66 Bydlisko: Žilina |
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/javasc ... put-masks/
_________________ C#, PHP, ... |
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
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
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14571 Témy: 66 | 66 Bydlisko: Žilina |
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)
_________________ C#, PHP, ... |
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
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">
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Pridať tam test na regulárny výraz:
patern.test(elem.value)
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
Vedel by si to tam aj zakomponovať, lebo ja sa v JS moc nevyznám.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Toto daj za to prve return false.
patern=/,,/;
if(patern.test(document.getElementById('txtChar').value){ return false; }
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
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">
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
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...
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
Mohol by si prosím napísať celý ten skript ako to bude vyzerať a tušim tam chýba zátvorka.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
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...
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
Nefunguje to. Ide to tak isto ako predtým.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
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...
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
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
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Máš to myslím blbo. Z kade máš takúto syntax???
Tu si pozri ako sa používa search: http://www.w3schools.com/jsref/jsref_search.asp
Ale odporúčam ti použiť test, tak ako som písal ja, lebo search, alebo match(už neviem) nejako blbne pri interpetácii výrazov...
A regulár bude cca.: /^\d([\d]*|,)\d|\d$/ - čisla oddelené čiarkou, ktorá nemôže byť na začiatku ani na konci. / JE TO BLBO, ESTE TO TREBA DOLADIT.../
Ale teraz budeš musieť testovanie negovať, lebo tento výraz vyhovuje tvaru ktorý potrebuješ...
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
ten search to je len názov formulára v html
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Dobre tak za odmenu to skús s týmto: /^(\d+,)*\d+$/
Takze: if( ! elem.value.test(patern)){ alert('BUBUBU'); }
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
Kde to tam mám dopísať? Napíš to prosím ťa do toho skriptu.
|
|
Registrovaný: 05.09.09 Príspevky: 1141 Témy: 127 | 127 Bydlisko: Lehota pod ... |
Kód: function valid(){ patern = /^(\d+,)*\d+$/; if( ! document.getElementById("wavenumber").value.test(patern)){ alert ('Zadali ste nesprávny formát pri zadávaní frekvencie!!!'); return false; }
return true; }
<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> // pridané po 2 hodinách 13 minútach od posledného príspevkuEDIT:Tak sorry tu je to už ok(ak tam máš ovšem fciu isNumberKey()): Kód: function valid(){ var patern = /^(\d+,)*\d+$/ ; if(patern.test(document.getElementById('wave').value)){
return true; }
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" id="wave" onkeypress="return isNumberKey(event)" /> <input class = "submit" type = "submit" name = "submit" value = "Hľadať"/> </form>
|
|
Registrovaný: 10.11.11 Prihlásený: 04.08.17 Príspevky: 21 Témy: 5 | 5 |
ok. vďaka, že si mi s tým pomohol.
|
|
Stránka: 1 z 1
| [ Príspevkov: 21 ] | |
|