在此函数中,根据输入的值,表单提交为true / false。为什么在这个函数中没有返回true?
基本上,我的if句子在表格输入中测试问号。如果有,那么我不希望表单提交到search.php。如果没有问号,那么是else语句,那么我希望表单提交给search.php。我尝试使用return true;使.form1提交,但它不起作用。然后我尝试了$('。form1')。submit(),但这使得它在输入被按下之前提交。
<script>
$(".askInput").keyup(function() {
if ($(this).val().indexOf("?") != -1) {
$(this).css({"color" : "#00bfff", 'border-top-right-radius' : '0px', 'border-bottom-right-radius' : '0px', '-moz-border-top-right-radius' : '0px', '-moz-border-bottom-right-radius' : '0px', '-webkit-border-top-right-radius' : '0px', '-webkit-border-bottom-right-radius' : '0px'});
$('.searchEnter').stop().animate({
marginLeft: "310px"
}, 200 );
$('.form1').submit(function () {
return false;
});
} else {
$(this).css({"color" : "#333", 'border-top-right-radius' : '5px', 'border-bottom-right-radius' : '5px', '-moz-border-top-right-radius' : '5px', '-moz-border-bottom-right-radius' : '5px', '-webkit-border-top-right-radius' : '5px', '-webkit-border-bottom-right-radius' : '5px'});
$('.searchEnter').stop().animate({
marginLeft: "250px"
}, 200 );
$('.form1').submit(function () {
return true;
});
}
});
</script>
答案 0 :(得分:1)
为什么不在提交时检查问号?
而不是不断更改表单的提交处理程序$('.form1').submit(function () {
if ($('.askInput').val().indexOf("?") != -1) return false;
});
$(".askInput").keyup(function () {
if ($(this).val().indexOf("?") != -1) {
$(this).css({
"color": "#00bfff",
'border-top-right-radius': '0px',
'border-bottom-right-radius': '0px',
'-moz-border-top-right-radius': '0px',
'-moz-border-bottom-right-radius': '0px',
'-webkit-border-top-right-radius': '0px',
'-webkit-border-bottom-right-radius': '0px'
});
$('.searchEnter').stop().animate({
marginLeft: "310px"
}, 200);
} else {
$(this).css({
"color": "#333",
'border-top-right-radius': '5px',
'border-bottom-right-radius': '5px',
'-moz-border-top-right-radius': '5px',
'-moz-border-bottom-right-radius': '5px',
'-webkit-border-top-right-radius': '5px',
'-webkit-border-bottom-right-radius': '5px'
});
$('.searchEnter').stop().animate({
marginLeft: "250px"
}, 200);
}
});
答案 1 :(得分:0)
$('.form1').submit(function () {
return true;
});
这会将只返回true
的函数绑定到submit
事件。即在此之后,当您提交表单时,该函数将返回true
。就是这样。
这是manual entry:
的
.submit( handler(eventObject) )
强>
handler(eventObject)
每次触发事件时执行的功能。
如果您只想提交表单,请使用$('.form1').submit()
。如果您不想提交表单,请不要致电.submit()
。即:
if (...) {
...
// don't call submit
} else {
...
$('.form1').submit();
}
答案 2 :(得分:0)
使用submit
而不使用任何参数:$('.form').submit()
答案 3 :(得分:0)
我认为您希望在askInput条目无效时阻止表单提交。
将提交处理程序绑定到表单时,它始终是附加的,因此每次运行keyUp处理程序时,都会向表单添加一个额外的提交处理程序。其中一个必然会“返回false”,阻止表单提交。
相反,可能会禁用提交按钮或向表单添加“无效”类,并添加单个表单提交处理程序,以确保表单没有无效的类。
e.g:
<form>
<input name="ask" /> <input type="submit" />
</form>
<script>
$('form').submit(function(e) {
if ($(this).hasClass('invalid')) {
e.preventDefault();
}
});
$('input[name="ask"]').keyup(function(e) {
if ($(this).val().indexOf("?") != -1) {
// ...
$(this.form).addClass('invalid');
// or
$(':submit', this.form).attr('disabled', 'disabled');
} else {
// ...
$(this.form).removeClass('invalid');
// or
$(':submit', this.form).removeAttr('disabled');
}
});
</script>
或者,使用经过实战考验的jQuery验证库,如jQuery ketchup。
答案 4 :(得分:0)
尝试。
$('.form1').submit(function (e) {
if ($('.askInput').val().indexOf("?") != -1) {
e.preventDefault();
}
$(this).submit();
});
答案 5 :(得分:0)
Blender试图告诉你的是什么(在所有jQuery魔法中,如果你喜欢那种东西)是为表单的提交事件添加一个监听器来查看输入并返回false,如果有的话?那里。简单来说,POJS术语:
<form onsubmit="return validateInput(this);">
<input name="foo" value="?">
<input type="submit">
</form>
<script type="text/javascript">
function validateInput(form) {
if (/\?/.test(form.foo.value)) {
// value has a ?, ask user to fix it
alert('Get rid of ? knucklehead!!');
// cancel submit
return false;
}
}
</script>