带有多个选择器的Jquery排除类型

带有多个选择器的Jquery排除类型,jquery,asp.net-mvc-4,jquery-ui,Jquery,Asp.net Mvc 4,Jquery Ui,我有一个mvc视图页面,它会生成多个同名元素。 我想在验证表单时排除所有类型隐藏的输入元素 例如,我的页面结果包含以下输入: <input name="[0].MPID" type="hidden" value=""> <input name="[1].MPID" type="hidden" value=""> .... <input id="MPID_0" name="[0].MPID" type="text" value="" class="valid">

我有一个mvc视图页面,它会生成多个同名元素。 我想在验证表单时排除所有类型隐藏的输入元素

例如,我的页面结果包含以下输入:

<input name="[0].MPID" type="hidden" value="">
<input name="[1].MPID" type="hidden" value="">
....

<input id="MPID_0" name="[0].MPID" type="text" value="" class="valid">
<input id="MPID_1" name="[1].MPID" type="text" value="" class="valid">
....
为了适应这种情况,我如下所示更改了选择器,控制台中出现了错误。请帮助我正确地纠正第二个排除选择器

$("[name$='\\.MPID' input:not(type=hidden)]").each(function () {
....
})

正如您所看到的,您的选择器不太正确。试试这个:

$('input:visible[name$="\\.MPID"]').each(function () {
    // ....
})
请注意,元素类型选择器位于第一位,位于属性选择器之外。另外,您可以使用
:visible
,而不是
:not(:hidden)
,或者
:not([type=“hidden”])

它只需要是$
('input[type=“text”])。每个(…
,但是您意识到,您永远不会得到任何客户端验证,并且如果您提交一个表单,它将只绑定到隐藏输入中的值?)
$('input:visible[name$="\\.MPID"]').each(function () {
    // ....
})