我正在运行一个基于Foundation的Abide函数在某个表单上是否有效的脚本。当由于某种原因该表格有效时,该表格会提交两次?为什么?
我对两个单独的字段进行了两次单独的ajax调用,因为需要检查它们的唯一性。如果它们都是唯一的,那么表单就需要提交。一切都像预期的那样。然而,表单会提交两次。
我尝试了两个版本的.submit()
,第一个版本根本不允许提交表单:$("#ClientCreateForm").submit();
,所以我找到了以前的问题,并将其更改为:$("#ClientCreateForm")[0].submit();
,现在它只提交了两次。
这是我的代码:
$("#ClientCreateForm").on('valid.fndtn.abide', function (event) {
var number = $("input[name='number']").val();
var dataString = 'number='+number;
$.ajax({
type: "POST",
url: "/bamboo/panda/actions/check_number/",
data: dataString,
success: function(data) {
var data = data.trim();
if(data == '1')
{
var email = $("input[name='email']").val();
var EdataString = 'email='+email;
$.ajax({
type: "POST",
url: "/bamboo/panda/actions/check_email/",
data: EdataString,
success: function(Edata) {
var Edata = Edata.trim();
if(Edata == '1')
{
$("#ClientCreateForm")[0].submit();
}
else
{
$(".email-field").attr('class', 'number-field small-3 columns error');
$(".email-field .error").html('Must be a unique email');
return false;
}
}
});
}
else
{
$(".number-field").attr('class', 'number-field small-3 columns error');
$(".number-field .error").html('Must be a unique number');
return false;
}
}
});
event.preventDefault();
提交表单的代码是HTML格式的,看起来像这样:
<fieldset>
<legend>Form Actions</legend>
<input type="submit" value="Create Client" name="MyClientSubmit" class="button small success pull-right">
</fieldset>
这是Abide在Foundation中的一个明显问题。
将$("#ClientCreateForm).on('valid.fndtn.abide', function (event) {
更改为:$("#ClientCreateForm).on('valid', function (event) {
解决了此问题,尽管valid
已弃用。
此解决方案可在以下位置找到:https://github.com/zurb/foundation/issues/5392
我在运行Foundation 5.5.1时遇到了同样的问题。
jQuery('form#reg_form').on('valid.fndtn.abide', function() {
然而,在今天简单地升级到5.5.2版本之后,它似乎被清除了。我碰巧调用了一个ajax请求,Firebug现在在Net面板中显示了一个请求。