Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一个简明的jQuery选择器用于特定输入类型的列表(type=';text';等)?_Jquery_Jquery Selectors_Textinput - Fatal编程技术网

是否有一个简明的jQuery选择器用于特定输入类型的列表(type=';text';等)?

是否有一个简明的jQuery选择器用于特定输入类型的列表(type=';text';等)?,jquery,jquery-selectors,textinput,Jquery,Jquery Selectors,Textinput,有没有更简洁的方法 // 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='date

有没有更简洁的方法

// 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()函数。另外,如果我能使选择器默认包含未来的输入类型(HTML6>),那将是最好的选择

回答:

这是我现在拥有的。比以前好多了。如果它能更精致,请让我知道

// 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规范的未来添加(对于那些认为这是不可能的人)。

当选择器不是字符串时,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
    }
});

当选择器不是字符串时,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
    }
});

MΓΓББLL和xFortyFourx都给了我这个解决方案,结果证明这是我寻求的最佳答案,但不确定为什么答案是在评论中而不是答案中

$("input:not([type='radio'], [type='text'])")

MΓΓББLL和xFortyFourx都给了我这个解决方案,结果证明这是我寻求的最佳答案,但不确定为什么答案是在评论中而不是答案中

$("input:not([type='radio'], [type='text'])")

如果要筛选出多个类型,可以执行以下操作:

$('input[type!="radio"][type!="text"]')

如果要筛选出多个类型,可以执行以下操作:

$('input[type!="radio"][type!="text"]')

如果您需要特殊情况,那么您没有选择余地,因为
.delegate()
什么时候不支持
:not()
?“另外,如果我可以使选择器默认包含将来的输入类型(HTML 6>)。”您实际希望这样的选择器如何工作?$($([type='radio'],[type='text'])。。既然没有包含的输入类型很少,为什么不使用它们呢?如果您需要特殊情况,那么您就没有选择了。
.delegate()
什么时候不支持
:NOT()
?“另外,如果我能使选择器默认包含将来的输入类型(HTML 6>),那将是最好的选择。”您实际希望这样的选择器如何工作?$(“输入:not([type='radio'],[type='text']))。。既然没有包含的输入类型很少,为什么不使用它们呢?不,我正在尝试获取除特定类型列表之外的所有输入,而不是特定类型。这不需要让jQuery解析一个复杂的选择器字符串,而是允许您传递一个函数选择器,这样效率更高。这很好,但是这如何能与.delegate()函数一起工作呢?是的,我也不能让它与选择器一起工作,所以我只是将逻辑卡在委托事件处理程序中。如果我只是尝试用特定类型获取输入,我可能会使用它,但目前选择器更干净。然而,这给了我一个想法,在结果被绑定后,我会对其进行过滤。不,我正在尝试获取除特定类型列表之外的所有输入,而不是特定类型。这不需要让jQuery解析一个复杂的选择器字符串,而是允许您传递一个函数选择器,这更有效。这很好,但是这如何能与.delegate()函数一起工作呢?是的,我也不能让它与选择器一起工作,所以我只是将逻辑卡在委托事件处理程序中。如果我只是尝试用特定类型获取输入,我可能会使用它,但目前选择器更干净。然而,这给了我一个想法,我用它来过滤已经绑定的结果。