2014-01-08 76 views
1

我想知道我怎么可以停止执行代码后面在aspx页面时,jQuery函数火灾:停止Asp.net页面执行与jQuery

$(document).ready(function() { 
      $("#btnSaveProvvisorio").click(function jControllaProvvisorio() { 
       var i; 
       var jElemento; 
       $('.MyTextBoxClass').each(function (i, v) { 
        jElemento = $(this).val(); 
        if (jElemento) { 
         if (isNaN(jElemento)) { 
          alert("Warning: " + jElemento + " is not a number!"); 
          return false; 
         } 
         else 
          if (parseInt(jElemento) <= 0){ 
           alert("Warning: " + jElemento + " is negative!"); 
         return false; 
        } 
        } 
       }); 
      }); 
     }); 

如何设置按钮:

<asp:Button ID="btnSaveProvvisorio" runat="server" style="text-align: center" Text="Salva provvisorio" OnClick="btnSaveProvvisorio_Click" BackColor="#FF6600" ClientIDMode="Static" OnClientClick="jControllaProvvisorio()"/> ? 

此版本给我一个错误;没有OnClientClick标签页aspx.cs不会停止。 错误在哪里? 谢谢! Igor

回答

1

对于您的按钮,您不需要指定OnClientClick,因为您可以通过jQuery附加点击事件。这意味着你的按钮看起来像:

<asp:Button ID="btnSaveProvvisorio" runat="server" 
      style="text-align: center" 
      Text="Salva provvisorio" 
      OnClick="btnSaveProvvisorio_Click" 
      BackColor="#FF6600" 
      ClientIDMode="Static" /> 

在您的jQuery的单击事件,您需要在event参数传递给你的函数,然后用e.preventDefault()停止服务器端执行。要做到这一点,你的jQuery会看起来像这样:

$(document).ready(function() 
{ 
    $("#btnSaveProvvisorio").on("click", function (e) 
    { 
     var i; 
     var jElemento; 

     $('.MyTextBoxClass').each(function (i, v) 
     { 
      jElemento = $(this).val(); 
      if (jElemento) 
      { 
       if (isNaN(jElemento)) 
       { 
        alert("Warning: " + jElemento + " is not a number!"); 

        // prevent ASP.NET server-side click from occurring. 
        e.preventDefault(); 
       } 
       else if (parseInt(jElemento) <= 0) 
       { 
        alert("Warning: " + jElemento + " is negative!"); 

        // prevent ASP.NET server-side click from occurring. 
        e.preventDefault(); 
       } 
      } 
     }); 
    }); 
}); 
+0

非常感谢你代码特立独行!有用!!! – Yellow75

+0

@Igor - 没问题...很高兴你的工作。 –

0

请确保你正在返回你在“OnClientClick”中调用的函数。所以你的按钮应该是这样的:

<asp:Button ID="btnSaveProvvisorio" runat="server" style="text-align: center" Text="Salva provvisorio" OnClick="btnSaveProvvisorio_Click" BackColor="#FF6600" ClientIDMode="Static" OnClientClick="return jControllaProvvisorio();"/> ? 
+0

对不起sredne,但有了这个解决方案,我收到错误:'jControllaProvvisorio'未定义 – Yellow75

+0

哦,对不起,我刚刚看到在您的初始解决方案中'jControllaProvvisorio'是在click处理程序中声明的,所以它只能在该事件触发。如果你想用我的解决方案来做到这一点,你需要将jControllaProvvisorio提取到文档中,以便页面可以访问它。 – sredne