【发布时间】:2016-01-13 23:52:53
【问题描述】:
我正在使用 jQuery 验证插件来确保我的表格中的所有输入都在 0 到 10 之间。每个表格行都是由 JS 动态创建的,这是我的 html 表格和用于添加表格行的 JS:
<form>
<table id="lineItemTable">
<tbody>
<tr>
<td>
<input type="text" name='gross' class="gross"/>
</td>
<td>
<input type="text" name='tare' class="tare"/>
</td>
</tr>
</tbody>
</table>
<p id="add">add row</p>
</form>
$("#add").click(function() {
var newRow = $('#lineItemTable tbody>tr:last').clone(true).insertAfter('#lineItemTable tbody>tr:last');
newRow.find('.gross').val('');
newRow.find('.tare').val('');
return false;
});
这是我的 jQuery 验证:
$("form").validate({
rules: {
gross: {
range: [0, 10]
},
tare: {
range: [0, 10]
}
},
submitHandler: function() {
var tableObj = $('table tbody tr').map(function(i) {
var row = {};
$(this).find('td').each(function(i) {
row[rowName] = $(this).find("input, select").val();
});
return row;
}).get();
$.ajax({
//code omitted
});
}
});
我的目标是使用此验证来确保每个表格行的值在 0 到 10 之间,以便我可以通过 $.ajax 提交所有数据。
我现在遇到的问题是它只会阻止第一个表行发生 ajax 调用。只要第一个表行遵循验证规则,任何动态创建的包含无效数据的表行都会以某种方式通过 ajax 发送。
有人可以帮我解决这个问题吗?
【问题讨论】:
-
尝试调用
if($("form").valid()){ $.ajax({})},即$.ajax在if条件内。 -
@vijayP 不幸的是它并没有真正起作用。
-
正在为你创造一个可能的小提琴吗?
-
@vijayP 让我尝试创建一个。
-
那会很棒...
:)
标签: javascript jquery ajax validation jquery-validate