无论类型如何,获取输入值的通用方法
我正在尝试编写一个可以与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; }
这适用于我需要的所有东西,除了无线电,因为它似乎读取第一个无线电的值,无论它是否被检查。
触发“必需”的字段将是各种文本输入( text
, url
, email
等), 或单个选择的无线电集之一。 没有多重选择。 我将把这个函数作为参数传递给我的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/
当没有选择任何东西时,它不起作用。 当发生这种情况时,不确定你想要它做什么?