HTML5の検証
答えて
私はそれが不可能だと確信しています。また、それは簡単にジャバスクリプトでカバーすることができますなぜ代わりに使用しないでください?
これは完璧に動作します:
<script language="javascript">
function checkPassword() {
if (document.pwForm.pw1.value != document.pwForm.pw2.value) {
alert ('The passwords do not match!');
return false;
}
}
</script>
<form action="filename.ext" name="pwForm" method="GET/POST">
<input type="password" name="pw1" value=""><br />
<input type="password" name="pw2" value=""><br />
<input type="Submit" name="CheckPassword" value="Check Passwords" onClick="return checkPassword();">
</form>
答えは正しいですが。このコードには多くの問題があります。1. field1が変更されない場合、カスタムエラーは追加されません。 2.誰かがpw1でパスワードを誤って入力していて、pw2でパスワードを誤っていて、有効ではあるがフィールドが無効のままになった後でこれを変更した場合)。 3.カスタムの妥当性の変更は、フィールドにカスタムエラーがないか、同じスクリプトでカスタムエラーが追加された場合にのみ行う必要があります(このためにvalidity.customError/validationMessageをテストする必要があります) –
あなたは少しよりよいとHTML5-利用何かをしたい場合は、この試してください:あなたのCSSにこれを追加することで、それが空想してください http://www.html5rocks.com/en/tutorials/forms/html5forms/
<label>Password:</label>
<input type="password" id="password" name="password">
<label>Confirm Password:</label>
<input type="password" id="passwordconf" name="passwordconf" oninput="check(this)">
<script language='javascript' type='text/javascript'>
function check(input) {
if (input.value != document.getElementById('password').value) {
input.setCustomValidity('The two passwords must match.');
} else {
// input is valid -- reset the error message
input.setCustomValidity('');
}
}
</script>
を(以下)。 HTML5の検証に失敗すると、問題の入力フィールドの周りに赤い枠線が表示されます。
:invalid {
border: 2px solid #ff0000;
}
すべてが完了しました。ユーザーが両方のパスワードを正しく入力するためには、alert()またはサーバー側の検証を使用する必要があります。クライアント側のものには依存しないでください。
私は同様の問題を抱えていました。これをHTML5 APIを使用して解決するために、私はこれを行いました:少なくとも8文字と数字を含むパスワードのパターンを設定しました。パターン妥当性についてel.validity.patternMismatch
チェックして最初にして2の妥当性を確認する
var password = document.querySelector('#password'),
passwordConfirm = document.querySelector('#password_confirm');
[].forEach.call([password, passwordConfirm], function(el) {
el.addEventListener('input', function() {
if (!el.validity.patternMismatch) {
if (password.value === passwordConfirm.value) {
try{password.setCustomValidity('')}catch(e){}
} else {
password.setCustomValidity("Password and password confirm doesn\'t match")
}
}
}, false)
});
を:その後、彼らは私がやったのマッチングにします。 パスワードを入力したパターンを示します。
おかげキッカーは、それは本当に便利でした。
入力を開始した時点でパスワードとパスワードの入力を無効にするように少し拡張しました。
var password = document.querySelector(' input[name=usr_password]');
var passwordConfirm = document.querySelector(' input[name=usr_password_confirm]');
if (password && passwordConfirm)
{
[].forEach.call([password, passwordConfirm], function(el) {
el.addEventListener('input', function() {
if (el.validity.patternMismatch === false) {
if (password.value === passwordConfirm.value) {
try{
password.setCustomValidity('');
passwordConfirm.setCustomValidity('');
}
catch(e){}
}
else {
password.setCustomValidity("The two passwords do not match");
}
}
if ((password.checkValidity() && passwordConfirm.checkValidity()) === false)
{
password.setCustomValidity("The two passwords do not match, and they don't comply with the password rules.");
passwordConfirm.setCustomValidity("The two passwords do not match, and they don't comply with the password rules.");
}
else
{
password.setCustomValidity('');
passwordConfirm.setCustomValidity('');
}
}, false)
});
}
私はこれがあなたが探しているものだと思います。
<p>Password: <input type="password" required pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}" name="pwd1" onchange="
this.setCustomValidity(this.validity.patternMismatch ? 'Password must contain at least 6 characters, including UPPER/lowercase and numbers' : '');
if(this.checkValidity()) form.pwd2.pattern = this.value;
"></p>
<p>Confirm Password: <input type="password" required pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,}" name="pwd2" onchange="
this.setCustomValidity(this.validity.patternMismatch ? 'Please enter the same Password as above' : '');
"></p>
これで、パスワードフィールドと再入力パスワードフィールドの検証が行われます。
汚れた作業を行うためにJqueryを使用しても構わない場合は、http://jqueryvalidation.org/validate/を使用することもできます。
チェックアウトhttp://jqueryvalidation.org/equalTo-method必要な場合は、より複雑なメソッドを書くことができます
<form id="myform">
<label for="password">Password</label>
<input id="password" name="password" />
<br/>
<label for="password_again">Again</label>
<input class="left" id="password_again" name="password_again" />
<br>
<input type="submit" value="Validate!">
</form>
<script>
$("#myform").validate({
rules: {
password: "required",
password_again: {
equalTo: "#password"
}
}
});
</script>
:あなたがこれを行うことができますが、あなたが本当にこれを避ける必要がありhttp://jqueryvalidation.org/category/plugin/
- 1. HTML5検証とPHP検証
- 2. HTML5検証パターン?
- 3. HTML5テキストエリアの検証
- 4. イメージタグのHTML5検証
- 5. HTML5フォーム検証エラーメッセージ
- 6. HTML5の検証jQueryの
- 7. HTML5の検証日付ピッカー
- 8. TinyMCEとHTML5フォームの検証
- 9. Select2とHTML5フォームの検証
- 10. HTML5カスタム検証角度
- 11. 適切なHTML5フォーム検証
- 12. html5検証エラー出力
- 13. HTML5検証メッセージですか?
- 14. HTML5フォーム検証パターンが
- 15. カスタム検証前にHTML5の検証が実行されます
- 16. プロトタイプのフォーム検証でHTML5フォームプレースホルダのフォールバック
- 17. HTML5の検証とASP.netのWebフォーム
- 18. HTML5の検証とフィールドの比較
- 19. Laravel DuskでのHTML5検証のテスト
- 20. HTML5フォームの検証 - エラーメッセージのカスタマイズ
- 21. ブートストラップモードでのHTML5フォームの検証
- 22. HTML5の検証前にキャッチする
- 23. HTML5の検証が機能しない
- 24. HTML5キャンバス要素のスクロール検証
- 25. リンクとangular.jsによるHTML5の検証
- 26. React.jsとHTML5電子メールの検証
- 27. AngularJS/HTML5ネストされたフォームの検証
- 28. HTML5入力検証でのカスタムエラー
- 29. HTML5フォーム検証の条件ルール
- 30. HTML5定型句、HTML5 CSSの検証をリセットします。
。 Ajax経由でサーバー側で検証を行います。 – Yang