Javascript 在默认设置和解除绑定后提交表单
我在表单上使用了Javascript 在默认设置和解除绑定后提交表单,javascript,jquery,Javascript,Jquery,我在表单上使用了preventDefault,我正试图使用它在语句为true时自动提交 function codeCheck(){ $("#code-form").submit(function(e){ e.preventDefault(); }); var code = $("#code").val(); $.ajax({ url: "index.php",
preventDefault
,我正试图使用它在语句为true时自动提交
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');
}
});
}
解除绑定确实有效,我可以在解除绑定时使用“提交”按钮。但是$(“#表单”).submit()
部分不起作用,淡出后不会自动提交表单
这是一把小提琴:
我想要的是,它在淡出后继续形成
编辑:为了更清楚,我刚刚添加了完整的函数。您不需要
解除绑定()
,因为页面已刷新,所有事件处理程序都将被销毁
$("#container").fadeOut("slow", function() {
$("#form").submit();
});
但是,如果您已经附加了事件处理程序,并且您通过ajax进行发布,并且希望解除该事件的绑定,那么您可以使用链接
$('#form').unbind('submit').submit();
您希望使用以下命令,因为您说提交事件已被阻止。这将以默认方式提交表单:
$("#form")[0].submit();
而不是:
$("#form").unbind('submit', function(){
$("#form").submit();
});
特别说明:
为此,请确保没有任何带有name=“submit”
的表单字段
更新
鉴于更新的代码,我的建议如下:
$("#form").submit(function(e){
e.preventDefault();
$( "#container" ).fadeOut( "slow", function() {
$("#form")[0].submit();
});
});
淡出代码应移动到提交处理程序内部
方法
.unbind()
用于删除事件处理程序;它没有调用事件处理程序。哦,你是对的,我误解了这一部分。如果你把alert('Here')代码>在解除绑定回调中看到了吗?没有,我只是测试了它,解除绑定确实不是这样工作的。但我在stackoverflow上的某个地方看到了它,它似乎起了作用,但我测试错了;因此没有什么可以解除绑定的。我们为什么还要解除绑定呢?在这之前我使用了preventDefault
,所以submit()
不起作用。有没有办法重置preventDefault
以便我可以再次使用submit?(那将是我的实际问题)。我只是尝试了一下,但它不起作用,实际上它甚至给了我一个错误<代码>$(…)[0]。提交不是一个函数
错误是因为您有一个带有name=“submit”
的表单控件;将其更改为类似于name=“mysubmit”
的内容,它应该可以工作。实际上,我没有name属性。请在您的问题中提供相关的HTML和JS代码。看看这个:当然我会解释;如果你考虑每个人做的事情,这是非常直接的。code>$('form').submit(),缩写为$('form').trigger('submit')
,触发submit事件,触发任何submit
处理程序;如果没有处理程序阻止它,那么表单也将被提交。另一方面,$('form')[0]。submit()
不会触发submit
事件,而是通过默认表单提交来提交表单。如果我需要进一步澄清,请告诉我。