Autor Zpráva
Lukas1169
Profil
Mám takýto formulár keď zadám znak ktorý nieje v
var valid = "abcdefghijklmnopqrstuvwxyz0123456789:/."
chcel by som aby sa ten znak automaticky hneď vymazal dá sa to Dakujem
<HEAD>

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function validate(field) {
var valid = "abcdefghijklmnopqrstuvwxyz0123456789:/."
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
field.focus();
field.select();
}
}
// End -->
</script>
</HEAD>

<!-- KROK DVA: Zkopírujte následujcí kod do těla BODY -->

<BODY>

<form>
<input type=text name="entry" onBlur="validate(this)">
<br>
<input type=submit value="Odeslat">
</form>
peta
Profil
<input type=text name="entry" onBlur="validate(this)" onkeydown="validate(this)">
Události JavaScriptu
pako
Profil *
nahrad si celu cast medzi tagmi script tymto:
function validate(field) {
  var valid = "abcdefghijklmnopqrstuvwxyz0123456789:/.";
  var fieldVal = field.value;
  var fieldValLen = fieldVal.length;
  var lastChar = fieldVal.substring(fieldValLen-1);
  if (valid.indexOf(lastChar) === -1) {
    field.value = fieldVal.substring(0,fieldValLen-1);
  }
}
a cast v body:
<input type="text" name="entry" onKeyUp="validate(this)">
Chamurappi
Profil
Reaguji na paka:
Řekl bych, že tvá funkce nepočítá s možností, že člověk zkusí psát i jinam než na konec dosud napsaného textu.


Reaguji na Lukase1169:
Přepisovat člověku <input> pod rukama je dost ošklivé. Zvážil bych jiné postupy:
1) Nedovolit uživateli nedovolené znaky napsat, tedy stornovat událost onkeydown vedoucí k jejich napsání. To je trochu složitější, protože v event.keyCode je číslo klávesy, ne přímo znak. A uživatel stejně může vložit nedovolený znak ze schránky (tedy Ctrl+V).
2) Kontrolovat hodnotu a uživatele jen informovat, co zadává špatně, případně mu nedovolit odeslat formulář, dokud chybu nenapraví. (Případně ji při odeslání napravit automaticky, záleží na situaci.)
pako
Profil *
Chamurappi:
pravdu dis, ani ma to nenapadlo.


co takto prepisat funckiu na:
function validate() {
  var field = document.getElementById('entry-input');
  var valid = /[!@#\$\%\^\&\*\(\)\{\}\|\"\:\\\?><]/;
  for (var i=0;i<field.value.length;i++) {
  field.value = field.value.replace(valid, "");
  }
}
toto by fungovalo aj na onsubmit formy aj na onblur, pripadne onkeyup inputu
Lukas1169
Profil
pako:
<SCRIPT LANGUAGE="JavaScript">
function validate() {
  var field = document.getElementById('entry-input');
  var valid = /[!@#\$\%\^\&\*\(\)\{\}\|\"\:\\\?><]/;
  for (var i=0;i<field.value.length;i++) {
  field.value = field.value.replace(valid, "");
  }
}
</script>

<form>
<input type=text name="entry" onBlur="validate(this)">
<br>
<input type=submit value="Odeslat">
</form>
Mám to takto a vôbec to nefunguje... Prepacte ale do JS sa nevyznám skoro vôbec... Neviem či sa to dá spraviť cez php, ak by sa dalo tak by to bolo lepšie...
A mimochodom ak sa mi to podarí sprovozniť dá sa to odkontrolovať trebars
cez isset? či sa náhodou nenachádza v poly zakázaný znak... Ďakujem
pako
Profil *
nefunguje ti to lebo to bol len napad, nie presny navod na riesenie. napis, ci to chces kontrolovat po kazdom stlaceni klavesy alebo ti staci vymazat zakazane znaky pri odoslani.

cez php by si si to mal urcite skontrolovat na strane servera.
Lukas1169
Profil
pako:
po každom stlačení klávesi alebo kopírovaní textu...
pako
Profil *
v ie6 sa budu dat vlozit neplatne znaky cez kontextove menu ale vycisti sa to pri odosielani + neda sa pohybovat v inpute sipkami. iny explorer na tomto kompe nemam, tak si to radsej este niekde skus.
ak ma byt neplatny znak aj medzera, vyhod si z var invalid=... znaky \s
<script>
function validate() {
  var field = document.getElementById('entry-input');
  var invalid = /[^\s0-9a-zA-Z\.:-]/g;
  for (var i=0;i<field.value.length;i++) {
  field.value = field.value.replace(invalid, "");
  }
}
</script>
<form onSubmit="validate()">
<input id="entry-input" type="text" name="entry" onInput="validate()" onKeyUp="validate()">
<br>
<input type=submit value="Odeslat">
</form>
Lukas1169
Profil
pako:
+ neda sa pohybovat v inpute sipkami.
to sa dá :-) a keď si niekto vypne v prehliadaci javu tak prepustí znaky... ?
Dá sa to nejako zabezpečiť? ďakujem
margin
Profil *
Lukas1169:
keď si niekto vypne v prehliadaci javu tak prepustí znaky... ?
Javu v PC nemám asi rok (od poslední přeinstalace) a vůbec mi nechybí.JavaScript není Java

Dá sa to nejako zabezpečiť?
Jedině na serveru. Jedno ze základních pravidel je nikdy nevěřit tomu, co ti posílá uživatel. Všechny javascriptové a a jiné kontroly formulářů v prohlížeči slouží pouze je zvýšení komfortu uživatele.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: