2

我正在尝试遍历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;
}

}

4

3 回答 3

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 必须是唯一的 - 您不能使用它们来选择多个元素,就像使用类一样。

于 2013-09-05T15:25:10.327 回答
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;
        }
    }
});

}

于 2013-09-05T15:39:26.483 回答
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;
            }
        }
    });
}
于 2013-09-05T15:29:06.820 回答