防止__doPostBack开火
我有一个网格控件,允许用户将值添加到网格中。
它会生成以下用于插入全新项目的链接。
Insert
我有一些自定义的jQuery代码,可以在提交之前validation文本框。 我试图阻止链接提交__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('You must provide a holiday name '); } if (holidayDate.length == 0) { hasErrors = true; $('#holidayList').append('You must provide a holiday date '); } if (hasErrors) { $('#holidayValidationDisplay').show(); return false; } }); });
但是当我不想在有错误的情况下发生回发时,链接仍然会启动。 我看到了一些阻止它在UpdatePanel中工作的东西,但我不确定那里的解决方案是否适用于我的场景。
如果有人有任何想法,我都是“耳朵”。
我相信你遇到的问题是按钮不知道表单是否有效。 这就是我做的:
编写一个自定义函数,根据其他值返回true或false:
function isTermsChecked(oSrc, args) { args.IsValid = $("#chkTerms").is(':checked'); }
因此,在此示例中,如果选中了my terms复选框,则args.IsValid为true。 只需转到链接属性,应该有一个名为OnClientClick
的属性。 你会把isTermsChecked
。
在您的特定情况下,您可能希望使用变量。 如果jQuery出现无效,请将该变量设置为false,并且自定义validation函数将引用该变量。 基本上如果它是真的,按钮将继续,错误,它不会。
编辑:如果您正在对每一行进行validation,我看到的问题是如果一行validation失败,那么上面的解决方案将禁用所有链接按钮,直到网格上的所有validation都通过。 您可能想要忘记自定义函数并执行以下操作:
如果jQueryvalidation失败,则找到该行中的链接按钮并添加值为return false
的OnClick
属性,然后如果validation通过,则删除该属性。