2013-08-08 17 views
17

私は2つの入力を持っています。入力を無効に設定する

pass:  <input type="password" name="pass" required/> 
pass again: <input type="password" name="pass2" required/> 

これらの入力を比較し、一致する場合は入力を有効に設定します。私はこれを試してみましたが、私はprop('valid', true);が動作しないと思います:

$(document).ready(function() { 
    $('input[name=pass2]').keyup(function() { 
     if($('input[name=pass]').val() == $('input[name=pass2]').val()) { 
      $('#pass_hint').empty(); 
      $('#pass_hint').html('match'); 
      $(this).prop('valid', true); 
     } else { 
      $('#pass_hint').empty(); 
      $('#pass_hint').html('mismatch'); 
      $(this).prop('invalid', true); 
     } 
    }); 
}); 

私は登録フォームを作成し、パスワードが同じでない場合は、入力フィールドが無効であると私はこれを提出し、私にいくつかのヒントを示してcan't。 ...この入力を無効に設定する方法はわかりません

+0

あなたはそれを無効としてマークしたときに異なる行動のいくつかの並べ替えを期待する、または実行でくださいそのスタイルが無効であることをユーザーに示すことを期待していますか? – Travesty3

+0

ログインボックスには、実際に '#pass_hint'という表示された要素が含まれていますか? PS。それを空にする必要はありません。 '.html()'はそれを行います。 – DevlshOne

+1

実際、JQueryでユーザ入力を検証しているのはなぜですか?これは操作可能であり、ユーザーはこれらのルールを簡単に回避することができます。 私はそれをサーバー側で行うことをお勧めします。 –

答えて

24

HTMLInputElement interfaceには、validまたはinvalidというようなプロパティはありません。

setCustomValidity(error)メソッドをネイティブフォーム検証で使用できます。

スクリプトについては、ここですべてのHTML5対応のブラウザで動作するはずのデモだ:

$('input[name=pass2]').keyup(function() { 
 
    'use strict'; 
 

 
    if ($('input[name=pass]').val() === $(this).val()) { 
 
     $('#pass_hint').html('match'); 
 
     this.setCustomValidity(''); 
 
    } else { 
 
     $('#pass_hint').html('mismatch'); 
 
     this.setCustomValidity('Passwords must match'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form action='#'> 
 
    <p>Password: 
 
     <input name=pass type=password required> 
 
    </p> 
 
    <p>Verify: 
 
     <input name=pass2 type=password required> 
 
    </p> 
 
    <p id=pass_hint></p> 
 
    <button type=submit>Submit</button> 
 
</form>

+1

ChromeがHTML 5準拠のブラウザであると仮定しても、あなたのフィドルは機能しません。 –

+0

@SerjSagan LinuxでChrome 46.0.2490.80をテストしました。できます。何がうまくいかないのか詳しく調べることはできますか? –

+0

私の悪いです。バリデーションがうまくいくためには、少なくとも2番目のフィールドに何かを入力しなければならないことを知るためにコードを長らく見ていなかった。 –

関連する問題