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

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

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

获得Field 1的价值是个问题。 我没有问题用文本类型或输入来解决这个问题,但是我试图让它与无线电一起工作并且遇到困难。 以下是我的代码的摘录:

 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; } 

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

触发“必需”的字段将是各种文本输入( texturlemail等), 或单个选择的无线电集之一。 没有多重选择。 我将把这个函数作为参数传递给我的jqueryvalidation配置中我需要它应用的每个字段。 将对其进行评估的“其他”字段的name属性。

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

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

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

试试这个

 var value = $('[name="option"]'); var type = value.attr("type"); if(type && type.toLowerCase() == 'radio') value = value.filter(":checked").val(); else value = value.val(); 

工作演示

像这样的东西:

 var value = $('[type="radio"][name="option"]:checked, [type!="radio"][name="option"]', form).val() || '0' 

与Shankar相似但在选择器中完全相同。

http://jsfiddle.net/infernalbadger/uUdX2/8/

当没有选择任何东西时,它不起作用。 当发生这种情况时,不确定你想要它做什么?