Prevent __doPostBack from firing off
我有一个网格控件,允许用户将值添加到网格中。
它会生成以下链接以插入一个全新的项目。
1
|
Insert
|
我有一些自定义 jQuery 代码在提交之前验证文本框。我试图阻止链接提交 __doPostBack,但我的代码不起作用。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
// 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 $(‘#holidayValidationDisplay’).hide(); $(‘a#radGridHolidays_ctl00_ctl02_ctl02_PerformInsertButton’).click(function(e) { e.stopImmediatePropagation(); // alert(‘You clicked me!’); if (holidayName.length == 0) { if (holidayDate.length == 0) { if (hasErrors) { |
但是当我不希望出现错误时发生回发时,链接仍然会触发。我看到了一些关于阻止它在 UpdatePanel 中工作的内容,但我不确定那里的解决方案是否适用于我的场景。
如果有人有任何想法,我都是”耳朵”。
- 我认为元素内的 href: 正在做你的回发。你可以删除它,它不应该发回?
- @Brett,我删除了 href 并且没有用。
不是直接回答您的问题,但您可以创建一个”虚拟”按钮来进行验证,如果成功,单击 .NET 按钮。
伪代码:
1
2 |
Submit
real submit button</asp:LinkButton> |
- 一定要喜欢不遵守先发表评论规则的-1狙击手。 1 就是为了这个。
我相信您遇到的问题是按钮不知道表单是否有效。这就是我所做的:
编写一个根据其他值返回真或假的自定义函数:
1
2 3 4 |
function isTermsChecked(oSrc, args)
{ args.IsValid = $(“#chkTerms”).is(‘:checked’); } |
所以在这个例子中,如果我的条款复选框被选中,那么 args.IsValid 为真。只需转到链接属性,应该有一个名为 OnClientClick 的属性。你会放 isTermsChecked.
在您的特定情况下,您可能希望使用变量。如果 jQuery 无效,将该变量设置为 false,自定义验证函数将引用该变量。本质上,如果它是真的,按钮会继续,假的,它不会。
编辑:如果您对每一行进行验证,我看到的问题是如果一行验证失败,那么我上面的解决方案将禁用所有链接按钮,直到网格上的所有验证都通过。您可能想忘记自定义函数并执行以下操作:
如果 jQuery 验证失败,则在该行中找到链接按钮并添加值为 return false 的 OnClick 属性,如果验证通过,则删除该属性。
- 锚链接是自动生成的,所以我无法控制 OnClientClick。也许我可以添加该属性?
- @Coson,是的,您可以添加所需的任何属性。新问题是,由于您有一个网格,如果您的一行无效,它实际上会使所有链接按钮不可点击。我将编辑我的答案。
- 我朝着稍微不同的方向去解决我的问题。然而,既然你给了我那个不同方向的灵感,我就给你提个醒。
来源:https://www.codenong.com/5983292/