我正在尝试遍历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;
}
}
答案 0 :(得分:4)
更改您的脚本,以便在使用each()
找到的行上找到复选框和文本框...
function GetCheckedRows() {
$("#flexGridView tr").each(function () {
var $checkBox = $(this).find("input[type='checkbox']");
var $textBox = $(this).find("input[type='text']");
if ($checkBox.is(':checked')) {
if ($textBox.val().length === 0) {
alert("You must specify the amount needed");
return false;
}
else {
return true;
}
}
});
}
如果复选框和文本框有类,那么在选择器中使用它们更有意义,而不是输入(因为每行中可能还有其他复选框和文本框 - 我不知道)。
此外,您的问题表明您对多个复选框和多个文本框使用相同的ID。 ID必须是唯一的 - 您不能像使用类一样选择多个元素。
答案 1 :(得分:3)
使用jquery上下文选择器选择每行中的c复选框,如下所示:
function GetCheckedRows() {
$("#flexGridView tr").each(function () {
var $this = $(this), $checkBox = $("#flexCheckBoxList", $this);
if ($checkBox.is(':checked')) {
if (textBox.val().length === 0) {
alert("You must specify the amount needed");
return false;
}
else {
return true;
}
}
});
}
答案 2 :(得分:0)
为您CheckBoxes
提供类似flexCheckBox
和TextBoxes
flexTextBox
function GetCheckedRows() {
var checkBox = null;
var textBox = null;
$("#flexGridView tr").each(function () {
checkBox = $(this).find(".flexCheckBox");
textBox = $(this).find(".flexTextBox");
if (checkBox.is(':checked')) {
if (textBox.val().length === 0) {
alert("You must specify the amount needed");
return false;
}
else {
return true;
}
}
});
}