ユーザーがtextinputに次の文字を入力できるようにする必要があります。
a-zA-Z0-9!@#$%^ * _ |
<form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn">
User Name:<br />
<input type="text" name="userName" size="25" /><br />
Password:<br />
<input type="password" name="pw" size="25" /><br />
<input type="submit" value="Log In" onClick="validate()"/>
</form>
上記は私のHTMLであり、以下はそれを検証するために使用しようとした私のJavaScriptです-しかし、それはうまくいきません-手がかり。
<script language="javascript">
document.logOn.onsubmit=validate;
function validate(){
var name=document.logOn.pw.value;
if(!name = "[a-zA-Z0-9!@#$%^*_|]"){
alert("Your Password Cant Have any thing other than a-zA-Z0-9!@#$%^*_| - Play It Straight!");
return false;
}
return true;
}
</script>
しかし、これは機能していません。 「>」や「<」、「{」などのように文字を入れることができます。
何かご意見は?
以下のように入力テキストを試すことができます:
<input type="text" pattern="[a-zA-Z0-9!@#$%^*_|]{6,25}" />
したがって、コードの変更は次のようになります。
<form action="#" method="get">
User Name:<br />
<input type="text" pattern="[a-zA-Z0-9!@#$%^*_|]{6,25}" /><br />
Password:<br />
<input type="password" /><br />
<input type="submit" value="Log In" />
</form>
これにより、JavaScriptを使用せずに実行できます。代わりにpattern
を使用できます。
フォームの検証にはJavaScriptよりも効果的です。
これを使って
<script language="javascript">
document.logOn.onsubmit=validate;
function validate(){
var name=document.logOn.pw.value;
var reg=/[^a-zA-Z0-9\!\@\#\$\%\^\*\_\|]+/;
if(reg.test(name)){
alert("Your Password Cant Have any thing other than a-zA-Z0-9!@#$%^*_| - Play It Straight!");
return false;
}
return true;
}
</script>
これはすべきです
<input type="text" name="something" pattern="[a-zA-Z0-9!@#$%^*_|]{0,100}">
これを試して、それがあなたのために働く場合は元に戻してください
function validate(){
var name=document.logOn.pw.value;
var test = new RegExp("[a-zA-Z0-9!@#$%^*_|]");
if(!name.match(test)){
alert("Your Password Cant Have any thing other than a-zA-Z0-9!@#$%^*_| - Play It Straight!");
return false;
}
return true;
}
これを試して...
if(!/[a-zA-Z0-9!@#$%^*_|]./.test(name)){