【问题标题】:Adding javascript from code breaks the validation on page! How to handle it?从代码中添加 javascript 会破坏页面上的验证!如何处理?
【发布时间】:2010-11-13 14:27:23
【问题描述】:

我所拥有的是仅当文本框长度为 8 时才应打开另一个页面的按钮。必须从代码中添加 Javascript,因为它不只是调用 bla.aspx,它更像是 bla.aspx?id=4&code=234 等等等……

我在服务器端有这段代码

button.Attributes.Add("onclick","javascript:window.open(bla.aspx)");

在客户端我有

<asp:TextBox ID="policyNumberTxt" runat="server" MaxLength="8" CausesValidation="true"></asp:TextBox>

<asp:RegularExpressionValidator ID="policyNumberTxtRev" runat="server"
    ControlToValidate="policyNumberTxt" ErrorMessage="Length must be 8."  
    ValidationExpression="{.{8}.}" ValidationGroup="bla" Display="Dynamic"></asp:RegularExpressionValidator>

<asp:Button ID="printBtn" CssClass="button" Text="Print" runat="server" CausesValidation="true" ValidationGroup="bla" />

发生的情况是,当我单击按钮时,页面 bla.aspx 会打开,甚至会触发回发。验证器正在显示消息,但页面已打开并已触发回发。

如何处理?验证被破坏...

谢谢..

【问题讨论】:

  • 您不需要“onclick”代码的“javascript:”前缀(除非 ASP.Net 有一些愚蠢的东西需要它...)
  • 还有,什么验证器?什么信息?
  • RegularExpressionValidator ErrorMessage="长度必须为8。"
  • 删除前缀没有任何作用。窗口仍在打开,并触发回发。如果我在没有服务器端脚本的情况下添加完全相同的按钮,则添加一切都像魅力一样......
  • ~ 还要查找“OnClientClick”

标签: javascript asp.net validation ajaxcontroltoolkit


【解决方案1】:

为防止提交表单添加“return false;”

button.Attributes.Add("onclick", "window.open('bla.aspx'); return false;")

但这也会阻止表单进行回发!

请注意,传递的 url 应该用引号括起来.. 而且你不需要像'Pointy'所说的“javascript:”前缀

我认为验证正则表达式应该更严格,只允许这样的字母和数字

ValidationExpression="[A-Za-z0-9]{8}"

【讨论】:

    【解决方案2】:

    尝试将客户端点击逻辑放在页面表单的 onsubmit 中?

    【讨论】:

    • 我不太明白你的意思。我需要在服务器端添加客户端点击事件。
    • 试试这样的。Page.Form.Attributes.Add("onsubmit", your code);
    【解决方案3】:

    找到答案here

    this.cmdSubmit.Attributes.Add("onclick","if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();if(Page_IsValid){window.open('upload_status.aspx','_blank','width=250,height=250');}");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 2012-03-04
      • 2015-12-09
      • 1970-01-01
      • 2017-01-31
      相关资源
      最近更新 更多