防止__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 falseOnClick属性,然后如果validation通过,则删除该属性。

    不直接回答您的问题,但您可以创建一个“虚拟”按钮来执行validation,如果成功,则单击.NET按钮。

    pesudocode:

     Submit real submit button