Jquery不返回false并继续执行其余代码

时间:2017-02-06 07:56:58

标签: jquery asp.net

使用jquery的net应用程序。我有一个按钮和gridview与复选框。如果没有选中任何复选框,我不想按钮触发并转到服务器端。我正在尝试如下。

这是我的按钮。

   <asp:Button ID="btnRegretletter" runat="server" Text="Send Regret Letter" class="submitLink blueButton" OnClientClick="javascript:check()" OnClick="btnRegretletter_Click" ValidationGroup="VGsubmit" />

这是我的jquery代码。

 function check() {
        alert("I have been called");
        var valid = false;
        var ResultArrayFirst = [];
        $('#<%= gdvRegretletter.ClientID %> input[type="hidden"]').each(function () {
            if ($(this).closest('tr').find('input[type="checkbox"]').is(':checked'))
            {
                ResultArrayFirst.push($(this).val());
            }
        });
        alert(ResultArrayFirst);
        if (ResultArrayFirst.length > 0) {
            valid = true;
        }
        else
        {
            alert("Please select at least one vendor to send Regret Letter.");
            valid = false;
            return valid;
        }
 $("#<%=gdvRegretletter.ClientID %> tr").each(function () {
            //Skip first(header) row
            if (!this.rowIndex) return;

            var status = $(this).find("td:last").text().trim();
            if (status == "Awarded" || status == "Rejected") {
            $(this).closest('tr').find('input[type="checkbox"]').prop('checked', false);
            }
     });
}

在上面的代码中,每当我不从gridview中选择任何复选框时,我的变量将为null,而我的其他部分应该执行。我能够发出警报但是一旦我的警报触发并点击确定,我的页面就会刷新,它将进入服务器端。我可以知道我该如何预防?任何帮助,将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

您没有使用return方法的check()值。

<asp:Button OnClientClick="return check()" />

此外,并非函数中的所有代码路径都返回值。

function check() {
    //Your existing code

    //Add the statement at end of function
    return valid;
} 

答案 1 :(得分:1)

return valid;应该在其他部分之外,如下面的代码段,因为在你的情况下如果长度大于0,函数将不会返回。

if (ResultArrayFirst.length > 0) {
   valid = true;
}
else
{
    alert("Please select at least one vendor to send Regret Letter.");
    valid = false;
}
return valid;

另外你需要像这样检查:

OnClientClick="return check()"

您还可以像以下代码段一样进行检查:

OnClientClick="if (!check()) { return false;};"