4

私は何度もこれに遭遇しました。何らかの検証に失敗した後 (通常は変更またはぼかし)、動的に生成された要素にフォーカスをリセット (およびまたはその内容を選択) したいのですが、一度も思いつきませんでした。満足のいく解決策で。なぜこれがうまくいかないのですか?マイフィドル

jQuery(function(){
    jQuery("body").append("<input type='text' id='test' size='5'/>&nbsp;&nbsp;<button>Go</button>");
    jQuery('body').on('blur', '#test', function()
    {   var test = jQuery(this).val();
        if(test && !isNumber(test))
        {   alert('Not a Number!');
            jQuery(this).focus().select();
            //jQuery('#test').focus().select();
        }
    });
});
function isNumber(n) {
        return !isNaN(parseFloat(n)) && isFinite(n);
}
4

3 に答える 3

3

関数を使用して試すことができsetTimeoutます:

$('#test').on('blur', function () {
    var $this = $(this), test = this.value;
    if (test && !isNumber(test)) { 
         setTimeout(function() {
            $this.focus().select();
         }, 4);
    }
});

http://jsfiddle.net/tFAaf/

于 2013-01-26T14:17:55.843 に答える
1

これを試すとどうなりますか:

$(function(){
    $("body").append("<input type='text' id='test' size='5'/>&nbsp;&nbsp;<button>Go</button>");

    $('#test').on('blur', function() {   
        if (isNaN(this.value)) {   
            alert('Not a Number!');
            $(this).focus();
        }
    });
});

ユーザーが要素を切り替えたときに要素に値がない場合、要素にフォーカスしてアラートを発生させます。これはあなたが望むものですよね?

于 2013-01-26T14:13:00.187 に答える
0

これ:

jQuery('body').on('blur', '#test', function()

次のようにする必要があります。

jQuery(document).on('blur', '#test', function()
于 2013-01-26T14:15:45.363 に答える