javascript - GridView 验证在 JavaScript 中无法正常工作

标签 javascript jquery gridview

我想在单击按钮时验证至少必须在 JavaScript 中编辑和更新其中一行。

所以我编写了以下代码进行验证

function checkGridValidate() {
        var StrPriError = "";

        var grdCount = GrdProspective1.Rows.length;

        for (var i = 0; i < grdCount; i++) {

            if (GrdProspective1.Rows[0].Cells[5].Value == "" || GrdProspective1.Rows[0].Cells[7].Value == "") {
                StrPriError += "Kindly edit atleast one row \n";
            }
            if (StrPriError != "") {
                alert(StrPriError);
                return false;
            }
            else {
                return true;
            }
        }
    }

这里发生的情况是,当我更新第一行并提交时,它没有给出任何完美的警报,但是当我更新第二行时,它仍然要求我请至少编辑一行

我不知道这里出了什么问题。

看看 js fiddle对于相同的

最佳答案

目前,验证仅限于检查顶行,原因有两个:

  • .Rows[0] 将始终检查顶行,尽管存在 for 循环。

    这应该在集合中递增时使用 i:

    if (GrdProspective1.Rows[i].Cells[5].Value == "" || 
    
  • 最后一个if..else,无论哪种情况,通过return都会中断循环。对于循环而言,这里的 return 语句与 break 语句具有类似的效果。

    因此,除非您希望循环被中断,否则应该将它们移出循环:

    for (var i = 0; i < grdCount; i++) {
        if (...) {
            // ...
        }
    }
    
    if (StrPriError != "") {
        alert(StrPriError);
        return false;
    }
    else {
        return true;
    }
    
<小时/>

不过,修复这些问题应该会揭示一个不同的问题 - 该函数正在检查每一行是否已被编辑,而不是一个或多个。

例如,如果有 5 行,并且您在其中 2 行中填写了两个字段,则其余 3 行将匹配条件并附加错误消息。

反转条件,以便您搜索已填充的行并记住是否已填充,应该可以解决此问题。

function checkGridValidate() {
    // assume invalid until found otherwise
    var anyEdited = false;

    var grdCount = GrdProspective1.Rows.length;
    for (var i = 0; i < grdCount; i++) {
        var cells = GrdProspective1.Rows[i].Cells;

        // verify that both fields were given a value
        if (cells[5].Value !== "" && cells[7].Value !== "") {

            anyEdited = true; // remember that you've found an edited row
            break;            // and, no need to keep looking for more
        }
    }

    // alert only if no rows were filled out
    if (!anyEdited) {
        alert("Kindly edit at least one row.");
    }

    return anyEdited;
}

关于javascript - GridView 验证在 JavaScript 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36355830/

相关文章:

c# - 如何通过逗号拆分字符串填充 gridview?

javascript - 在 JavaScript 中创建干净的、可继承的对象

Javascript ES6 Const 可以在不允许时更改

jquery - 为事件管理表单选择的 rails

java - gridview 中的图像在滚动时改变其位置

wpf - 如何在 WPF 中自动调整 GridViewColumn 数据大小并右对齐?

Java 或任何其他语言 : Which method/class invoked mine?

javascript - CKEditor 4 内联 : How to hide toolbar on demand?

javascript - 在循环内设置超时

jquery - 如何使用phonegap在拨号框中分配电话号码?