【问题标题】:Opposite of preventDefault [duplicate]与 preventDefault 相反 [重复]
【发布时间】:2013-05-27 19:57:34
【问题描述】:

当我的条件为真时,我需要重新打开默认设置。因为我在提交按钮的 onclick 中使用了该条件,所以我不能将 preventDefault 放入其中,因为它会在我单击它后阻止它并且没有用。

因此,当条件为真时,我需要它来恢复表单操作。同样在 onclick 中,我需要它第一次做出反应,现在每次点击它时只需 +1 一次。

所以在这种情况下,它必须在第一次点击时提示 Success,然后继续到表单页面。

HTML:

<form id="formName">
    <input type="submit" id="submitBtn" value="Submit" />
</form>

JS:

var a = 1;  
$("#formName").submit(function(e){
    e.preventDefault();
        $(document).on("click", "#submitBtn", function () {
                if(a != 1){
                    alert("Fail!");
                }
                else{
                    alert("Success");
                    return true;
                }
        });
    });

演示:http://jsfiddle.net/Z9Zwz/

【问题讨论】:

  • 这些都没有回答我的问题。如果我在没有 onclick 的情况下拥有它,我只会在带有 false 条件的 if 语句中使用 preventDefault。但在这种情况下,这对我不起作用。
  • @Xegano 也请显示点击处理函数。我认为这是某种形式的验证?
  • 我添加了一个 jsfiddle。之前忘记加了

标签: javascript jquery


【解决方案1】:

防止默认提交比 imo 更难。 我在跨浏览器/平台时遇到了几个问题。

我最终决定删除提交按钮并使用 JQuery ajax 提交表单,您似乎正在使用它。在对表单进行硬编码时,onsubmit 会返回 false。 这应该会更容易。

【讨论】:

    【解决方案2】:

    问题是浏览器只能在用户点击提交按钮时提交表单。您不能从 JavaScript 端提交表单sensu stricto。不过,您可以通过 AJAX 进行模拟(我强烈建议这样做)。

    如果是其他事件,我建议用div 包装一个按钮,在div 上绑定到click,然后稍后手动触发该事件。

    附:不要在事件处理程序中添加事件处理程序。您正在堆叠事件处理程序。

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 2015-04-21
      相关资源
      最近更新 更多