gpt4 book ai didi

javascript - 如何重置表单提交事件的 event.preventDefault()?

转载 作者:行者123 更新时间:2023-11-30 06:41:13 25 4
gpt4 key购买 nike

我有一个表单可以将购物车数据提交到支付网关 (WorldPay) 支付处理页面。在客户决定继续付款但在提交表单之前,我需要执行一些额外的逻辑。基本上,我只是想在最后一刻生成对订单的唯一引用。

这是提交事件的 jQuery 代码:

$(function(){

$('#checkout-form').submit(function(e){

var $form = $(this);

var $cartIdField = $('#cartId');

console.log($cartIdField.val());

if($cartIdField.val() == ''){

e.preventDefault();

$.ajax({
url: baseUrl + '/shop/ajax/retrieve-shopping-cart-reference/',
data: {}, type: 'post', dataType: 'json',
success: function(json){
if(json.error == 0){
$('#cartId').val(json.data.cart_reference_number);
$form.submit();
}else{
alert(json.message);
}
}
});
}else{
console.log('Submitting form...'); //Does not submit!
}
});

});

问题是在 success: 子句中触发的第二次提交期间,表单仍未提交。我假设 event.preventDefault() 持续超出当前条件。

我该如何解决这个问题?

最佳答案

为了在表单提交之前执行任何操作,我使用了以下方法希望它会有所帮助

 $('#checkout-form').live("submit",function(event){

//handle Ajax request use variable response
var err =false;

var $form = $(this);
//alert($form);
var values = {};
$.each($form.serializeArray(), function(i, field) {
values[field.name] = field.value;
});
//here you get all the value access by its name [eg values.src_lname]
var $cartIdField = $('#cartId');

console.log($cartIdField.val());

if($cartIdField.val() == ''){
$.ajax({

// your code and condition if condition satisfy the return true
// else return false
// it submit your form
/*if(condition true)
{
var err =true;
}
else
{
var err = false;
}*/

})
}
else
{
return true;
}
if(err)
{
return false
}
else
{
return true;

}
})

关于javascript - 如何重置表单提交事件的 event.preventDefault()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com