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

Wes*_*rch 6 javascript forms jquery jquery-validate

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

  • 如果Field 1的值在指定的值数组中(当前使用"No","n/a"和"0"进行测试),或者为空,则不执行任何操作.否则,需要使用Field 2.

获得Field 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;
}
Run Code Online (Sandbox Code Playgroud)

这适用于我需要的所有东西,除了无线电,因为它似乎读取第一个无线电的值,无论它是否被检查.

将触发字段中的"必需的"要么将是各种文本输入中的一个(text,url,email等),一个<select>或单个的选择无线电集合.没有多重选择.我将把这个函数作为参数传递给required我的jquery验证配置中我希望它应用的每个字段.name被评估的"其他"字段的属性将可用.

这是我到目前为止的演示,有点难看但有笔记:http://jsfiddle.net/uUdX2/3/

我已经尝试了一些使用is(':checked'):checked选择器的不同方式,但它们都失败了.我从演示中删除了它们,因为它们不起作用.

如何使用无线电文本类型或选择输入,而不知道它将是哪种输入,我需要什么?

Sha*_*oli 8

试试这个

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

if(type && type.toLowerCase() == 'radio')
  value = value.filter(":checked").val();
else
  value = value.val();
Run Code Online (Sandbox Code Playgroud)

工作演示