【问题标题】:stop asp.net btnsave.click event from firing when validation fails验证失败时停止触发 asp.net btnsave.click 事件
【发布时间】:2012-12-28 13:17:02
【问题描述】:

我有这个 java 脚本验证函数,当客户端点击 btnsave 时会触发 如果文本框的文本为空,则显示一个消息框并且焦点位于 文本框,但我似乎无法阻止验证失败时回发页面 我是不是错过了什么。这是我的代码

function validate() 
  {
      var itemscanned;
      itemscanned = document.getElementById('txtItemCode');
      if (itemscanned.value == '') 
      {
          alert("Plz Enter Item Code");
          return false;
         itemscanned.focus
      }
      else 
      {
          alert(itemscanned.value);
      }
  }

【问题讨论】:

  • 这是表单的submit 按钮吗?

标签: javascript asp.net validation


【解决方案1】:

像这样在函数名前写return

   <asp:Button ID="btnSave" runat="server" Text="Save" CssClass="buttons"  OnClientClick="return validate()"/>

【讨论】:

    【解决方案2】:

    如果这是一个 ASP.NET WebForms 应用程序,你真的应该考虑using the Validator controls。它们处理您要求的所有客户端逻辑。

    如果你使用的是MVC,还有一种方法可以做到model validation on the client side

    【讨论】:

      【解决方案3】:

      如果它的 asp.net 按钮控件添加这个

      OnClientClick = "return validate();"
      

      如果是html按钮添加这个

      onclick = "return validate();"
      

      【讨论】:

        【解决方案4】:

        这属于你处理事件的方式。请显示asp标记和javascript事件的绑定。

        您可以尝试使用 javascript 停止事件传播:

        event.stopPropagation();
        

        在这里阅读:https://developer.mozilla.org/en-US/docs/DOM/event.stopPropagation

        注意:您必须将事件作为参数获取到验证函数:

        function validate(event) {
        
            var itemscanned;    
            itemscanned = document.getElementById('txtItemCode');
            if (itemscanned.value == '') {
                alert("Plz Enter Item Code");
                event.stopPropagation();
                itemscanned.focus
                return false;
            }
            else
            {
                alert(itemscanned.value);
            }
        }​
        

        希望这会有所帮助。如何将验证函数绑定到按钮非常重要,因为 asp.net 会自行生成大量 javascript(google 用于 asp.net 客户端验证)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多