如果我输入Javascript验证,ASP.Net PostbackURL不起作用

Cyr*_*pta 2 javascript asp.net validation postback webforms

我在ASP.Net中有一个usercontrol,其中包含一个用于回发的按钮.此按钮还具有一些在处理事件之前完成的Javascript验证.

今天我尝试通过设置按钮的PostBackURL属性回发到另一个URL.但它不起作用,页面不断回复自己.所以我做了一些调查,发现了.

  1. 回发到另一个URL是通过ASP.Net中的Javascript实现的.
  2. 如果我保持对我的验证功能的调用

    OnClientClick ="return validate()"然后回发不会发生.

  3. 如果我删除对验证函数的调用,回发工作正常.

这是按钮标记在验证时的外观.

<input type="submit" name="ctl00$cphMain$pra1$btnSubmit" value="Submit" onclick="return validate();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false))" id="ctl00_cphMain_pra1_btnSubmit" style="width:80px;" />
Run Code Online (Sandbox Code Playgroud)

没有验证

<input type="submit" name="ctl00$cphMain$pra1$btnSubmit" value="Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$cphMain$pra1$btnSubmit&quot;, &quot;&quot;, false, &quot;&quot;, &quot;Result.aspx&quot;, false, false))" id="ctl00_cphMain_pra1_btnSubmit" style="width:80px;" />
Run Code Online (Sandbox Code Playgroud)

您会注意到缺少对"return validate()"的调用,这就完全不同了.

我怎样才能让它发挥作用?

tva*_*son 13

更换

OnClientClick="return validate();" 
Run Code Online (Sandbox Code Playgroud)

OnClientClick="if (!validate()) { return false; }"
Run Code Online (Sandbox Code Playgroud)