1

これを解決する方法がわかりません。

と を使用jQuery.focus()jQuery.focusout()て Ajax リクエストをトリガーし、WordPress で投稿の名前を変更しています。このコードは Chrome と Firefox では問題なく動作しますが、IE では動作しません。

スニペット:

$('.editname').on('click', function() {

    var input = $('<input id="editcat" type="text" name="editcat" value="' + name + '" />');
    input.appendTo($(this));
    $("#editcat").focus();
});

$(".editname").focusout(function() {

    $(this).children('input').detach();
    $(this).children('span').show();


});

作業例: http://jsfiddle.net/moraleida/fE5Tq/3/

focusout() イベントは、ブラウザが追加された入力に時間をかけるappendTo前に、IEの直後に呼び出されるようです。focus()

これに対する既知の回避策はありますか?

編集

に変更focusoutしてもうまくいきblurません。どうやら、問題は、呼び出すと焦点$("#editcat").focus();.editname緩んだりぼやけたりすることです。その行にコメントすると、入力は正常に表示されますが、クリックしてフォーカスすると、切り離されます。

4

3 に答える 3

2

代わりにぼかしイベントを試してください

$(".editname").on('blur', function() {

    $(this).children('input').detach();
    $(this).children('span').show();


});
于 2012-10-09T22:36:52.367 に答える
2

focusout結局のところ、問題は要素ではなく、親要素にアタッチすることにありましたinput。これで解決しました:

$(".editname").on('focusout', 'input', function() {

    // $(this) now refers to the input element, not .editname
    $(this).siblings('span').show();
    $(this).detach();


    });
});​

参照用の最終作業フィドル: http://jsfiddle.net/moraleida/fE5Tq/8/

于 2012-10-10T12:10:21.040 に答える
1

focusout の代わりに blur イベントを使用してみてください。

于 2012-10-09T22:38:19.813 に答える