-2

この投稿の後、jQuery または Firefox で奇妙なバグを見つけました。どちらが正しいか説明できますか。

jQuery(document).ready(function(){

    //Works on Windows in: Firefox(17.0.1), IE
    //Doesn't work on OS X 10.8 in: Firefox(17.0.1), Safari
    //And also doesn't work on Windows in Chrome
    jQuery('input').focus(function(){
        jQuery(this).val('');
    });

    //Same on events: change, click, select, on
    jQuery('.checkbox').click(function(){ 
        alert(jQuery(this).val());
    });
});​

ここに例がありますhttp://jsfiddle.net/nonamez/Gq8VK/

4

2 に答える 2

1

Firefox は想定どおりに動作しており、フォーカス時に値を空白に設定し、設定したバンク値を警告するクリック コールバックを実行します。Webkit ベースのブラウザでは、要素に「tabindex」属性を含め、それを使用してフォーカスをチェックできます。マウスを使用してフォーカス イベントを発生させると Webkit が機能しません。入力とテキストエリアでは正常に機能するようです。

于 2012-12-20T17:41:09.937 に答える
1

フォーム要素に関しては、すべてのブラウザーが同じ動作をするわけではありません。表示されているのは、クリック イベントの結果として、Webkit ブラウザーがチェックボックスにフォーカスを当てていないことです。これがバグかどうかは、w3 の仕様によって決まります。

この件に関して w3.org で決定的な答えを見つけることができません。私が見つけたもののほとんどは、これがユーザーエージェントに任されていることを示唆しているようです.

ただし、これをスクリプトに含めることで、すべてのブラウザーを同じように動作させることができます: http://jsfiddle.net/Gq8VK/5/

// Any input that does not receive focus from a mouseclick 
// will now do so, in all browsers. This shouldn't affect browsers that
// focus input elements on click. 
$(document).on('mouseup', 'input', function(){
    if (!$(this).is(":focus")) $(this).focus();
});

スクリプトはイベント委任を使用しているため、イベントが添付されたときに DOM に存在しないものを含むすべての入力に対して機能します。

于 2012-12-20T18:19:39.147 に答える