有没有更简洁的方法呢?
// 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']";
注意:我不能使用 .Not() 函数,因为此选择器将在 .delegate() 函数中使用。此外,如果我能让选择器默认包含未来的输入类型(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'])";
请注意,它还包括输入和文本区域,这也意味着默认情况下将包含对HTML规范的未来添加(对于那些认为这是不可能的人)。
当选择器不是字符串时,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
}
});
如果要筛选出多个类型,可以执行以下操作:
$('input[type!="radio"][type!="text"]')
MДΓΓ БДLL 和 xFortyFourx 都给了我这个解决方案,事实证明这是我正在寻找的最佳答案,但不确定为什么在评论中回答而不是答案。
$("input:not([type='radio'], [type='text'])")