我在表单上使用了preventDefault
,我试图在语句为真时自动提交。
function codeCheck(){
$("#code-form").submit(function(e){
e.preventDefault();
});
var code = $("#code").val();
$.ajax({
url: "index.php",
type: "POST",
data: { codeCheck: 1, ajaxCode: code }
}).done(function(check) {
if(check == 2){
$("#used").css("display", "block");
}
else if(check == 1){
$("#code").css('background', "url('../img/check.png') no-repeat scroll 170px 2px");
$("#submit").css('display', 'block');
$("#submit").on("click", function(){
$( "#container" ).fadeOut( "slow", function() {
$("#code-form")[0].submit();
});
});
$("#used").css("display", "none");
}
else{
$("#code").css('background', "none");
$("#used").css("display", "none");
//$("#code-form").unbind('submit');
}
});
}
unbind确实有效我解除绑定时可以使用提交按钮。但是$("#form").submit()
部分不起作用,它在淡出后不会自动提交表单。
这是一个小提琴:http://jsfiddle.net/90wmpw7x/1/
我想要的只是它在淡出后继续形式。
编辑:为了更加清晰,我刚刚添加了完整的功能。
答案 0 :(得分:3)
您想要使用以下内容,因为您说已经阻止了提交事件。这将以默认方式提交表单:
$("#form")[0].submit();
而不是:
$("#form").unbind('submit', function(){
$("#form").submit();
});
特别提示:
为此,请确保您没有name="submit"
的任何表单字段。
<强>更新强>
鉴于更新的代码,这是我的建议:
$("#form").submit(function(e){
e.preventDefault();
$( "#container" ).fadeOut( "slow", function() {
$("#form")[0].submit();
});
});
fadeOut
代码应移至提交处理程序
答案 1 :(得分:1)
您不需要unbind()
,因为页面会刷新,所有事件处理程序都将被销毁。
$("#container").fadeOut("slow", function() {
$("#form").submit();
});
但是,如果您附加了事件处理程序并且您通过ajax发布并想要取消绑定该事件,那么您可以使用链接
$('#form').unbind('submit').submit();