我目前有一个输入表单。每个输入类有两个条目,如下所示:
<form>
<input type="text" name="firstname_a" class="firstname" disabled="disabled" />
<input type="text" name="firstname_b" class="firstname" />
<input type="text" name="surname_a" class="surname" disabled="disabled" />
<input type="text" name="surname_b" class="surname" />
<input type="submit" value="submit" />
</form>
在提交时,我希望JQuery检查值是否匹配值b(最终用户输入的值a,由为审查公司工作的外部工作人员输入的值b)。表单最多可包含470个输入字段,这些字段根据正在执行的审查类型存储在数据库中。因此,我不想输出470次!:
if($('input["name=firstname_a"]').val() == $('input["name=firstname_a"]').val())
{
// do something
}
else
{
// do something else
}
相反,我想找到一种动态的方法,可能使用serializeArray()函数,但我正在努力!非常感谢所有或任何帮助。
答案 0 :(得分:4)
您可以在.each
结尾的_a
输入中循环,并与其_b
对应方进行比较:
$('#target').submit( function() {
// Iterate over each input with name ending in _a
$('input[name$="_a"]').each( function() {
// Get the base name by removing _a
var name = $(this).attr('name').replace(/_a$/, '');
// Compare _a to _b
if( $('input[name="'+name+'_a"]').val() != $('input[name="'+name+'_b"]').val()) {
alert(name+" field does not match!");
}
});
return false;
});
示例:
http://jsfiddle.net/jtbowden/yqMGG/
这是一个版本,其中保存所有不匹配并在最后发出警告:
http://jsfiddle.net/jtbowden/amsJj/
或突出显示错误的版本:
答案 1 :(得分:2)
我将使用以_a
结尾的集合匹配名称,然后查找相应的_b
并检查其值。在外部范围中设置变量以跟踪是否找到任何无效输入。
var valid = true;
$('input[name$="_a"]').each( function() {
var $a = $(this);
var bName = $a.attr('name').replace(/_a/,'_b');
var $b = $('input#' + bName);
if ($a.val() != $b.val()) {
// add a validation message for b?
valid = false;
// return false; // only if you want to stop after the first one
}
});
return valid;
答案 2 :(得分:0)
您可以使用带有选择器$=
的结尾并迭代列表,假设它们的顺序相同且_a值始终为_b值:
var aSet = $('input[name$="_a"]'),
bSet = $('input[name$="_b"]'),
al = aSet.length;
for (var i = 0; i < al; i++) {
if (aSet.eq(i).val() == bSet.eq(i).val()) {
// do something
} else {
// do something else
}
}
答案 3 :(得分:0)
你想同时评估所有元素吗?如果是这样,它在表单提交后属于服务器端。如果你想在每次场模糊后做这件事,那么
<input type="hidden" name="firstname_a" class="firstname" />
<input type="text" name="firstname_b" class="firstname eval" rel="#firstname_b"/>
$('.eval').live('blur',function(){
if($(this).val()==$($(this).attr('rel')).val()){
...
}else{
...
}
});
如果你真的想在提交时这样做,那么
$('.eval').each(function(){
if($(this).val()==$($(this).attr('rel')).val()){
...
}else{
...
}
});