1

これを行うためのより簡潔な方法はありますか?

// exclude all HTML 4 except text and password, but include HTML 5 except search
var inputSelector = "textarea,input[type='text'],input[type='password'],input[type='color']," +
    "input[type='date'],input[type='datetime'],input[type='datetime-local']," +
    "input[type='email'],input[type='month'],input[type='number'],input[type='range']," +
    "input[type='tel'],input[type='time'],input[type='url'],input[type='week']";

注:このセレクターは.delegate()関数で使用されるため、.Not()関数は使用できません。また、セレクターに将来の入力タイプ(HTML 6>)をデフォルトで含めることができれば最高です。

答え:

これが私が今持っているものです。以前よりもはるかに優れています。もっと洗練できるなら教えてください。

// exclude all HTML 4 except text and password, but include HTML 5 except search
var inputSelector = "textarea,input:not([type='checkbox'],[type='radio'],[type='button']," +
    "[type='image'],[type='submit'],[type='reset'],[type='file'],[type='search'])";

inputとtextareaも含まれていることに注意してください。これは、HTML仕様への将来の追加がデフォルトで含まれることを意味します(これが可能だとは思わなかった人にとって)。

4

3 に答える 3

1

セレクターが文字列でない場合、 delegate()メソッドはうまく機能しないようです。この問題を回避するには、ロジックをデリゲートハンドラー内に配置するだけです。

//Input types I do not want to select
var typeArray = ["text", "date"];

$("form").delegate("input", "click", function() {
    if($.inArray(this.type, typeArray) === -1) {
        //Put your logic here
    }
});
于 2012-04-29T15:23:40.690 に答える
0

複数のタイプを除外する場合は、次のようにすることができます。

$('input[type!="radio"][type!="text"]')
于 2012-04-29T15:38:00.880 に答える
0

MДΓΓБДLLとxFortyFourxの両方が私にこの解決策を与えてくれました。それは私が探していた最良の答えであることがわかりましたが、なぜ答えではなくコメントで答えられたのかわかりません。

$("input:not([type='radio'], [type='text'])")
于 2012-04-29T15:34:09.630 に答える