【发布时间】:2012-01-27 12:21:44
【问题描述】:
我有这个表单,输入具有相同的名称但相似的(增量)ID。
我希望表单验证是否有姓名,年龄必须是强制性的..
现在发生的情况是只有第一个输入是强制性的。
这是我的代码:
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
</head>
<body>
<form id="people">
<div class="section">
<input id="person1" name="person" class="person" type="text" placeholder="First Name" />
<input id="age1" name="age" class="age" type="text" placeholder="Age" />
</div>
<div class="section">
<input id="person2" name="person" class="person" type="text" placeholder="First Name" />
<input id="age2" name="age" class="age" type="text" placeholder="Age" />
</div>
<div class="section">
<input id="person3" name="person" class="person" type="text" placeholder="First Name" />
<input id="age3" name="age" class="age" type="text" placeholder="Age" />
</div>
...
<input type="submit" id="submit" name="submit" value="Add" />
</form>
<script type="text/javascript">
$(function(){
$('#people').validate();
$('#submit').click(function(){
$('[id^="person"]').each(function(){
if ($(this).val().length>0){
//alert($(this).val());
//alert($(this).parent().find('.age').val());
$(this).rules('add', {
required: true,
minlength: 2,
messages: {
required: "Specify the person name",
minlength: "Minimum of 2 characters"
}
});
$(this).parent().find('.age').rules('add', {
required: true,
number: true,
messages: {
required: "Must have an age",
number: "Specify a valid age"
}
});
}
});
});
});
</script>
</body>
【问题讨论】:
-
拥有多个同名文本框可能是个坏主意!?
-
我在 stackoverflow 中找到了一些带有 .each() 函数的答案,但我无法使其工作。将来我会有动态的“行数”,所以我希望有相同的名称,以便我可以在服务器端更轻松地使用它们
-
@stian.net - 重复输入名称没有问题,事实上这是表格数据的标准做法。在这种情况下,这当然不是造成困难的原因。
-
@nnnnnn 你知道为什么只验证第一个输入吗?
-
我遇到了同样的问题:。要验证所有输入,只需为每个文件设置不同的索引号。例如:文件[0]、文件[1]、文件[2]等