【问题标题】:Stop Javascript click event execution if condition is satisfied如果满足条件,则停止 Javascript 点击事件执行
【发布时间】:2018-10-14 03:25:48
【问题描述】:

我试图在满足某些条件时停止执行 Javascript 事件处理程序,我的代码如下所示:

 $(".save").click(function (event) {
            $(".loader").fadeIn(300);

            var statusValue = $("#status").val();
            console.log(statusValue);

            if (statusValue == null || statusValue == '') {
                $("#status").css({
                    "border-color": "red",
                    "border-width": "1px",
                    "border-style": "solid"
                });
                event.preventDefault();
                console.log("NOT EXECUTED");
            }

            console.log("EXECUTED");
// .. some more code
}

当我检查控制台时,我得到这样的结果:



未执行
已执行

所以我想知道怎么来的? If == null 条件满足不应该 event.preventDefault() 停止这个 .click 事件从执行到结束?

我正在尝试实现,如果没有选择任何内容然后阻止执行,我的选择如下所示:

<select class="form-control" id="status">
        <option value="Done">Done</option>
        <option value="Complited">Completed</option>
        <option value="Cancel">Cancel</option>
</select>

【问题讨论】:

标签: javascript html jquery jquery-events


【解决方案1】:

事件已经发生。 你可以使用这个:

 $('form').attr('onsubmit', 'return false;');

【讨论】:

    【解决方案2】:

    不,event.preventDefault() 不会按照您的想法执行,在这种情况下,如果您想停止函数执行,您可以在 if 块的末尾添加一个空的 return;。另一种解决方案是放置一个else 块。

    event.preventDefault() 阻止默认操作发生,例如,如果您将其放在 &lt;a&gt;link&lt;/a&gt; 上,它不会重定向到 href,因为点击 a 的默认设置是将页面重定向到 href 道具上的路径。 Example.

    【讨论】:

      【解决方案3】:

      event.preventDefault() 不适用于您的情况,请改用return;

      $(".save").click(function (event) {
      
          if (true) {
            console.log("EXECUTED");
            return;
            console.log("NOT EXECUTED");
          }
      
          console.log("NOT EXECUTED");
      });
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div id="banner-message">
        <button class="save">Save</button>
      </div>

      【讨论】:

        【解决方案4】:

        要阻止它,请使用:

        throw new Error("Something went badly wrong!");
        

        来源: https://stackoverflow.com/a/9298915/4110122

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-21
          • 1970-01-01
          • 1970-01-01
          • 2012-01-24
          • 1970-01-01
          相关资源
          最近更新 更多