我有一个网格控件,允许用户在网格中添加一个值。
它会生成以下用于插入全新项目的链接。
<a onclick="if(!$find('radGridHolidays_ctl00').insertItem()) return false;" id="radGridHolidays_ctl00_ctl02_ctl02_PerformInsertButton" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("radGridHolidays$ctl00$ctl02$ctl02$PerformInsertButton", "", true, "", "", false, true))'>Insert</a>
我有一些自定义的jQuery代码,可以在提交之前验证文本框。我试图阻止链接提交__doPostBack,但我的代码无效。
// if need be, move this to its own .js file
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
// Document loaded, let's register some validation
$(function() {
$('#holidayValidationDisplay').hide();
$('a#radGridHolidays_ctl00_ctl02_ctl02_PerformInsertButton').click(function(e) {
e.stopImmediatePropagation();
e.preventDefault();
var hasErrors = false;
// alert('You clicked me!');
var holidayName = $('#radGridHolidays_ctl00_ctl02_ctl02_validatorHolidayName').val().trim();
var holidayDate = $('#radGridHolidays_ctl00_ctl02_ctl02_RDIPHolidayDate_dateInput_text').val().trim();
if (holidayName.length == 0) {
hasErrors = true;
$('#holidayList').append('<li>You must provide a holiday name</li>');
}
if (holidayDate.length == 0) {
hasErrors = true;
$('#holidayList').append('<li>You must provide a holiday date</li>');
}
if (hasErrors) {
$('#holidayValidationDisplay').show();
return false;
}
});
});
但是当我不想在有错误的情况下发生回发时,链接仍然会启动。我看到了一些阻止它在UpdatePanel中工作的东西,但我不确定那里的解决方案是否适用于我的场景。
如果有人有任何想法,我都是“耳朵”。
答案 0 :(得分:0)
我相信您遇到的问题是该按钮不知道表单是否有效。这就是我的工作:
编写一个自定义函数,该函数根据其他值返回true或false:
function isTermsChecked(oSrc, args)
{
args.IsValid = $("#chkTerms").is(':checked');
}
因此,在此示例中,如果选中了my terms复选框,则args.IsValid为true。只需转到链接属性,应该有一个名为OnClientClick
的属性。你会放isTermsChecked
。
在您的特定情况下,您可能希望使用变量。如果jQuery出现无效,请将该变量设置为false,并且自定义验证函数将引用该变量。基本上如果它是真的,按钮将继续,错误,它不会。
编辑:如果您正在对每一行进行验证,我看到的问题是如果一行验证失败,那么上面的解决方案将禁用所有链接按钮,直到网格上的所有验证都有通过。您可能想要忘记自定义功能并执行此操作:
如果jQuery验证失败,则找到该行中的链接按钮并添加值为OnClick
的{{1}}属性,如果验证通过,则删除该属性。
答案 1 :(得分:0)
不直接回答您的问题,但您可以创建一个“虚拟”按钮来执行验证,如果成功,则单击.NET按钮。
pesudocode:
<a onclick="if(validate()) $('#dotnetbutton').trigger('click')">Submit</a>
<asp:Linkbutton id="dotnetbutton" style="position:absolute;left:-99999px">real submit button</asp:LinkButton>