0

jQueryを使用して作成された動的コントロールを持つフォームがあります。jQueryを使用してコントロールに検証を適用しました。ぼかしイベントのコントロールを検証しています。ここでの問題は、blurイベントで検証が失敗する同じコントロールにフォーカスを設定する必要があることです。

私はこのようなことをしました:

$(propVal1).blur(function () {
    if(!ValidateNumber(this, propName1)) {
        alert('Value should be numeric in ' + propName1);
        setTimeout(function() {$(this).focus();}, 1);
    }
});

propVal1が動的に作成された入力コントロールを表す場合、propName1はプロパティの文字列名です。

4

1 に答える 1

1

これが発生する理由は、入力コントロールがウィンドウ内の唯一のコントロールであるため、フォーカスが失われると、ウィンドウ全体がフォーカスを失い、フォーカスがないウィンドウで入力にフォーカスを合わせることができないためです。

これは、これを確認するために作成したテストhtmlです。

<form>
    <input id="my_input" type="text" />
    <input id="my_input2" type="text" />
</form>

<script type="text/javascript">
    $("#my_input").blur( function () { alert('bad input'); setTimeout( function() { $(window).focus(); $("#my_input").focus() }, 1 ); return false }  );
</script>

2番目の入力をコメントアウトすると、コードは機能しません。

考えられる解決策の1つは、入力の後に非表示の入力を設定して、最初の入力がぼやけたときにフォーカスをキャッチすることです。

于 2012-04-09T16:14:32.243 に答える