无论类型如何,获取输入值的通用方法

2024-02-18

我正在尝试编写一个可以与 jquery 验证插件一起使用的通用函数,该函数将根据另一个字段的值使一个字段成为必需的。这就是我想要发生的事情:

  • 如果字段 1 的值位于指定的值数组中(当前使用“No”、“n/a”和“0”进行测试),或者为空,则不执行任何操作。否则,将字段 2 设为必填。

获取字段 1 的值是问题所在。我用文本类型或<select>输入,但我试图让它与收音机一起工作但遇到困难。这是我的代码的摘录:

var value = $('[name="option"]').val(),
    empty = ['no', '', 'n/a', '0'];

// If the input is not "empty", make the additional field required
if ($.inArray(value.toLowerCase(), empty) < 0) { // returns -1 if not found
    required = true;
} else {
    required = false;
}

这适用于我需要的一切,除了无线电之外,因为它似乎读取第一个无线电的值,无论它是否被检查。

将触发“必填”的字段将是各种文本输入之一(text, url, email等),一个<select>,或一组单选收音机。没有多项选择。我将把这个函数作为参数传递给required在我希望它适用的每个字段的 jquery 验证配置中。这name被评估的“其他”字段的属性将对其可用。

到目前为止,这是我的演示,有点丑陋,但有注释:http://jsfiddle.net/uUdX2/3/ http://jsfiddle.net/uUdX2/3/

我尝试了很多不同的方法is(':checked'):checked选择器,但他们都失败了。我将它们从演示中删除了,因为它们不起作用。

我需要什么才能让它与无线电一起工作and文本类型或选择输入,而不知道它将是哪种输入?


Try this

var value = $('[name="option"]');
var type = value.attr("type");

if(type && type.toLowerCase() == 'radio')
  value = value.filter(":checked").val();
else
  value = value.val();

Working demo http://jsfiddle.net/uUdX2/7/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无论类型如何,获取输入值的通用方法 的相关文章

随机推荐