【问题标题】:How to find all drop downs which doesn't have any value selected?如何找到所有没有选择任何值的下拉菜单?
【发布时间】:2014-10-14 23:06:09
【问题描述】:

我有一个手动提交的表单(使用 JS),它使查询字符串直接,因为它附加了所有控件 id(无论它们是否有价值)我在某处读到,我可以通过禁用控件来避免这种情况在提交表单之前没有值。

因此,在我的表单中,我有文本框、复选框和选择(下拉菜单),我正在尝试编写一个内联查询,它将获取所有未从其列表中选择选项/值的选择:

这个$('form').find('select option:selected[value!=""]') 有点作用,但这个$('form').find('select option:selected[value=""]') 根本不起作用。

任何帮助将不胜感激。

【问题讨论】:

  • 总体问题是您不希望使用 GET 提交表单(导致所有变量都在查询字符串中)吗?您可以改用 javascript 中的 POST 方法来避免这种情况。
  • 快速搜索发现:stackoverflow.com/questions/10651349/… - 现在我们只需要像这样转过来:jQuery("select").filter(function(){return this.value;})
  • @Twicetimes:它是一个记录过滤页面,网站功能需要用户能够分享过滤结果,因此使用了 GET。
  • 啊,好吧,在这种情况下,我认为@owenconti 有
  • @somethinghere : this.value 不适用于选择类型。

标签: javascript jquery


【解决方案1】:

通过检查表单中的每个元素,这在表单提交时很简单。确保您为用户提供了一种重新启用禁用的表单元素的方法。

一个有效的代码是:

$("#testForm").on("submit", function() {
    $(this).find('select option:selected[value=""]').parent().attr("disabled", "disabled");
    alert("ok");  // for debug purposes
    return false; // this stops the form from actually being submitted
});

这是一个演示小部件禁用的工作小提琴:

http://jsfiddle.net/sw6v928m/3/

编辑:更新为实际选择禁用元素

编辑 2:根据 OP 的请求更新以稍微压缩代码

【讨论】:

  • 这个例子看起来不错,单行也可以吗?不,我猜?
  • 哇这太美了,所以我错过了 .parent() 是吗??
  • 我不确定您遗漏了什么,您从未发布过完整的源代码 :) 但是您想要定位选定的值,并禁用包含这些值的实际父元素(在此case 是选择列表本身),以禁用它
  • 在最初的问题中我提到我尝试了 $('form').find('select option:selected[value=""]'),无论如何感谢您为我指明正确的方向。
猜你喜欢
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 2013-06-17
  • 2014-02-05
  • 2020-05-09
  • 1970-01-01
相关资源
最近更新 更多