JQuery选择隐藏除外的输入字段

Bob*_*Bob 53 jquery

我在表格中有一行,其中包含一个复选框和一些其他表单字段(文本框,隐藏字段,选择列表).选中该复选框后,我想禁用该行中除隐藏字段外的所有表单字段.我大部分时间都在工作,但我似乎无法忽视隐藏的领域.

选择表格行中所有表单字段但忽略选择中隐藏字段的最佳方法是什么?

nei*_*ker 50

$(":input:not([type=hidden])")
Run Code Online (Sandbox Code Playgroud)

":input"是一个jQuery伪选择器......"选择所有输入,textarea,select和button元素." http://api.jquery.com/input-selector/


cle*_*tus 43

假设"隐藏"你的意思是type="hidden":

<input type="hidden" name="foo" value="bar">
Run Code Online (Sandbox Code Playgroud)

那么你可以使用属性not equals selector来做到这一点:

$("tr input:checkbox").click(function() {
  var cb = $(this);
  var tr = $(this).closest("tr");
  if (cb.val()) {
    tr.find("input[type!='hidden']").attr("disabled", true);
  } else {
    tr.find("input[type!='hidden']").removeAttr("disabled");
  }
});
Run Code Online (Sandbox Code Playgroud)

我的一般建议是避免属性选择器.他们很慢.给出相关的输入(隐藏的或隐藏的输入),然后在选择器中使用它.

但是,如果你的意思是"隐藏",如"不可见"那么使用:visible选择器:

$("tr input:checkbox").click(function() {
  var cb = $(this);
  var tr = $(this).closest("tr");
  if (cb.val()) {
    tr.find("input:visible").attr("disabled", true);
  } else {
    tr.find("input:visible").removeAttr("disabled");
  }
});
Run Code Online (Sandbox Code Playgroud)


小智 21

您也可以使用隐藏选择器解决此问题

$("input:not(:hidden)")

另请参阅:jQuery隐藏选择器


Sun*_*nil 5

我在jquery中找到了一种简单的方法。

$("tr input").not("input[type='hidden']")
Run Code Online (Sandbox Code Playgroud)

在下面的代码段中,有一个div,其id为tabsDiv,其中包含多个html元素,此代码获取div中除type为的所有输入元素hidden

$("#tabsDiv").find("input").not("input[type='hidden']")
Run Code Online (Sandbox Code Playgroud)


Sar*_*raz 1

…………

$('tr input').attr('disabled', true)
$('tr input[type="hidden"]').removeAttr('disabled')
Run Code Online (Sandbox Code Playgroud)