【发布时间】:2013-09-05 15:14:42
【问题描述】:
我正在尝试遍历 gridview 并向用户发出警报,如果他们没有填写他们检查过的项目的数量。但它只适用于第一个复选框,它不会返回 false,因为代码仍然在服务器端执行。
function GetCheckedRows() {
var checkBox = $("#flexCheckBoxList")
var textBox = $("#flexTextBox")
$("#flexGridView tr").each(function () {
if ($(checkBox).is(':checked')) {
if (textBox.val().length === 0) {
alert("You must specify the amount needed");
return false;
}
else {
return true;
}
}
});
}
完成!想要显示完成的代码,当某些事情不正确时循环并停止。我必须创建一个变量来停止循环执行。这不仅会检查空值,还会检查它是否是数字。
function GetCheckedRows() {
var exitSubmit = false;
$(".gridView tr").each(function (e) {
var checkBox = $(this).find("input[type='checkbox']");
var textBox = $(this).find("input[type='text']");
if (checkBox.is(':checked')) {
if (textBox.val().length === 0 || !$.isNumeric($(textBox).val())) {
exitSubmit = true;
return false;
}
else {
return true;
}
}
});
if (exitSubmit) {
alert("Please enter a valid amount");
return false;
}
}
【问题讨论】:
-
它是因为您使用 id 循环使它们成为类并尝试循环
-
您发布的功能不足以停止表单发布。它只是返回一个真/假,除非你正确地劫持了点击事件,否则它对 UI 没有任何作用,例如
<a href="thing" onclick="return GetCheckedRows();">click!</a>。请发布您的其余代码,特别是 GridView 的 ASPX。 -
显示 gridview 标记会更方便,恕我直言。
-
@Graham 他没有提到提交表格。验证后他可以做任何事情。
-
感谢您的快速回复!这是按钮的标记