我有一张表格,它向paypal提交了价值......
在提交给paypal之前我想以编程方式检查变量并将它们保存到数据库
为此,我有一个on(submit)代码拦截默认的表单操作,并首先将变量提交给我的脚本进行预处理..
然后一旦OK,我就会调用表单的提交函数..
结果=表单是发布BLANK / ZERO变量
cleared_to_submit = 0;
$("#my_form").on("submit", function(e){
if(cleared_to_submit){
cleared_to_submit = 0;
return;
}else{
e.preventDefault();
postvars = $(this).serializeArray();
$(this).find(":input").prop("disabled",true);
url = "?act=pay_now&";
$.post( url, postvars ,function(data){
var stat = data.stat;
if(stat == 'ok'){
cleared_to_submit = 1;
$("#my_form").submit(); //resubmit form
}else if( stat == 'input_error'){
showAlert(statMsg, "danger");
$("#my_form").find(":input").prop("disabled",false);
}else{ // ERROR
$("#my_form").find(":input").prop("disabled",false);
showAlert("Error:" + statMsg, "error");
}
});
}
});
这是预期的副作用吗?
答案 0 :(得分:3)
在cleared_to_submit
函数完成您需要执行的操作后,尝试使用e.preventDefault()
而不是使用标记$(this).unbind("submit").submit();
。$("#my_form").on("submit", function(e){
基本上我想说的是:一旦您在.submit()
事件中验证了表单,就可以使用此代码提交表单而不调用{{1}事件你已经绑定了。
例如:
.submit()
我不确定这会解决您的问题,但它可以让您了解如何更轻松地验证表单。
答案 1 :(得分:1)
这是因为我停用了表单input
字段
$(this).find(":input").prop("disabled",true);
并且在调用submit()
之前没有重新启用它们,如果表单输入字段被禁用,那么它们的变量也是如此。
答案 2 :(得分:0)
在调用$(this).find(":input").prop("disabled",true);
方法后尝试放置$.post
,如果输入表单被禁用,POST方法变量将为空