在异步事件后提交表单和调用排队事件时遇到困难
-
11-12-2019 - |
题
我有这个工作在本地设置(与jquery。1.6.4),但它不工作在dev设置(jquery。1.3.2).
考虑以下形式 -
<form onsubmit="return validateMacros();">
<input id="formsubmitbutton" type="submit" name="formsubmitbutton" value="Submit" />
</form>
注意 validateMacros();
上面打电话。
和下面的javascript -
jQuery(document).ready(function()
{
$("input#formsubmitbutton").click(preValidateUrls);
function preValidateUrls(evt)
{
evt.preventDefault(); //to prevent form submission until completion of async event
$.ajax({
...
...
success: function(res)
{
$("form#frmBanners").submit(); //This submits the form in case of both versions but in 1.3.2 case, the validateMacros() function is not called
}
});
}
});
function validateMacros()
{
//some logic here - which is not executing in case of jquery.1.3.2
}
当jquery。1.6.4加载完毕,函数 validateMacros()
执行完成后执行 preValidateUrls()
, ,这是所期望的。
但是当jquery。1.3.2已加载, validateMacros()
根本不执行,表单只是提交。
我如何使它在两个版本上工作。我做错了什么?
解决方案
去不显眼!
$('form#frmBanners').on('submit', validateMacros);
我们要做的是 订阅 的功能 submit
表单的事件,在你给它一个id之后(我刚刚注意到你使用了 frmBanners
为例)。不显眼意味着你没有在你的HTML中放置任何Javascript,这是像jQuery这样的库的主要目的。所以,在外部Javascript文件中的任何地方,包括我上面提供的行。任何时候表格是 提交 和 不是 只是当提交按钮被点击时,该函数将被调用。
所以,当你打电话的时候 $("form#frmBanners").submit();
, ,事件被触发,函数被调用。就解雇这些类型的事件而言,这离遵循惯例更近了一步。
不隶属于 StackOverflow