jquery - try catch 表单提交事件,然后不再捕获它

标签 jquery forms submit calculator

编辑:@mhodges 回答了问题。 Jsfiddle 已更新。谢谢!

我正在设置一个小计算器/捐赠表格。表单很简单:输入一个数字,然后提交按钮执行计算并获得一个新值,此时我希望它链接到捐赠页面。这是一些示例代码:

<form id = "donation" action = "donation/page">
  <input id = "firstNumber" placeholder = "400.00">
  <input type = "submit" id = "submit" value = "Calculate Number">
</form>

这是我运行它的 jquery:

$(document).ready(function(){
  $("#donation:not(.ready)").submit(function(e){
    e.preventDefault;
    var amount = $("#firstNumber").val() / 5;
    $("#firstNumber").val(amount);
    $("#submit").val("Donate Now!");
    $("#donation").addClass("ready");
  });
});

编辑:拼写和 JS fiddle 的链接:

JS Fiddle

因此计算器运行良好,并且新值在输入中显示得很好。我的问题是提交按钮的值没有改变,即使在获得 .ready 类之后,提交按钮仍然继续执行计算。我以为在我的 jquery 中使用 not:(.ready) 选择器可以解决这个问题,但事实并非如此。有什么想法吗?谢谢!

最佳答案

您需要使用event delegation而不是事件绑定(bind)。代码如下所示:

$(document).ready(function(){
  $(document).on("submit", "#donation:not(.ready)", function(e){
    e.preventDefault();
    var amount = $("#firstNumber").val() / 5;
    $("#firstNumber").val(amount);
    $("#submit").val("Donate Now!");
    $("#donation").addClass("ready");
  });
});

还请注意 - e.preventDefault() 是一个函数,因此需要括号

关于jquery - try catch 表单提交事件,然后不再捕获它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36898844/

相关文章:

javascript - jquery延迟函数与IF语句

javascript - 在 Javascript 中,如何创建一个以毫秒为单位的精确计时器?

javascript - 当转到另一个表单并再次返回时保留表单中的数据

python - 如何在 Django 中向 UserCreationForm 添加字段?

javascript - 从 JS 代码定位 div

jquery - ASP.NET MVC 2 使用 jQuery 加载部分 View - 无客户端验证

javascript - 如何在 JS 和 HTML 中停止表单自动重置?

jquery mobile 阻止提交

JavaScript 点击提交

asp.net webforms + jquery = 无法按下按钮