我有这个工作在本地设置(使用jquery.1.6.4),但它不能用于开发设置(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()
根本不执行,表单只是提交。
如何在两个版本上运行它。我做错了什么?
答案 0 :(得分:1)
不引人注目!
$('form#frmBanners').on('submit', validateMacros);
我们在这里做的是订阅该函数到表单的submit
事件后,给它一个id(我刚注意到你使用frmBanners
作为一个例子)。 Unobstrusive意味着你没有在HTML中添加任何Javascript,这是jQuery等库的主要目的。因此,在外部Javascript文件中的任何位置,包括我在上面提供的行。只要单击提交按钮,只要表单提交且不,系统就会调用该函数。
因此,当您调用$("form#frmBanners").submit();
时,将触发该事件并调用该函数。就发射这类事件而言,这更接近遵循惯例。