使用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,而我的其他部分应该执行。我能够发出警报但是一旦我的警报触发并点击确定,我的页面就会刷新,它将进入服务器端。我可以知道我该如何预防?任何帮助,将不胜感激。谢谢。
答案 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;};"