9

ぼかしで数値入力フィールドの単純な checkValidity を実行しようとしていますが、正しく機能しません。これは Chrome でまだ動作しますか? 例えば:

<input onBlur="checkValidity()" type="number" name="x" id="x" min="64" max="2048" value=64>

また

<input onBlur="this.checkValidity()" type="number" name="x" id="x" min="64" max="2048" value=64>

何もしないようです。ただし、コンソールでは、

$("#x")[0].checkValidity() 

は、入力ボックスの現在の値と (64,2048 を超える制限) に基づいて、true または false を返します。これは壊れていますか、それとも間違っていますか?

4

5 に答える 5

6

これは、あなたが行きたいと思うかもしれないもののデモンストレーションです:

http://jsfiddle.net/9gSZS/

<input type="number" min="64" max="256" onblur="validate(this);" />
function validate(obj)
{
  if(!obj.checkValidity())
  {
    alert("You have invalid input. Correct it!");
    obj.focus();
  }
}

ここでは概念を説明しているだけであることに注意してください。非常に不快な体験を引き起こす可能性があるため、単にコピーしないでください。alert

フルブロッキングの代わりに、フローティング DIV を使用してユーザーを引き付けますalert

于 2013-01-17T03:15:27.780 に答える
0

onChange イベントを使用する必要があります

例えば

var input1 = document.getElementById('txt_username');
    input1.onchange = function(){
        input1.setCustomValidity(input1.validity.patternMismatch ? 'username must match a-z,A-Z,0-9,4-16 character' : ''); 
    }
于 2013-01-16T04:28:41.023 に答える
-2

onblur="checkValidity()"blurイベントはキャンセルできないため、効果はありません。

于 2013-01-17T06:49:29.803 に答える