我有一个表单提交代码,它执行AJAX调用&如果匹配,则从那里重定向。
但是,不知何故,返回false被省略&表格已提交。
我不想使用return false,&需要取消所有案件的提交。有没有jquery方法呢?
function getLogin()
{
//cancel form submission code here
$username = $('#username').val();
$password = $('#password').val();
console.log('Logging- '+$username+' - '+$password);
callAjaxService($username, $password); // redirects according to response from this method
}
HTML
<form action="" method="get" onSubmit="getLogin();">
实际代码在Jquery-mobile&amp;在getLogin()函数结束时遇到return false;
问题 - 它无法停止提交表单。
答案 0 :(得分:2)
假设getLogin绑定到表单提交按钮/链接,您可以使用preventDefault和stopPropagation
function getLogin(e)
{
//cancel form submission code here
e.preventDefault();
e.stopPropagation();
}
摆脱onSubmit="getLogin();"
<form id="uniqueID" action="" method="get">
然后使用ready
$(function(){
$("#uniqueID").click(getLogin);
})
答案 1 :(得分:1)
我不确定如何调用getLogin()
?你有一个提交表格的<input type="submit" onclick="getLogin()">
按钮。
如果是这样,添加一个点击处理程序并在下面实现代码,
<强> HTML:强>
<input type="submit" onclick="getLogin()" id="submit_btn">
<强> JS:强>
$('#submit_btn').click (function (e) {
e.preventDefault(); //this should stop the form submission.
getLogin();
});
答案 2 :(得分:1)
我不确定这是否有效,但我会尝试操纵提交处理程序:
$('#myform').submit(function(){
var user = $('#username').val();
var pw = $('#password').val();
$.ajax(..., { success: function(data){
if( data.condition )$('#myform').submit();
else window.location = 'redirect.html';
});
return false;
});
在阅读docs 10秒后,我注意到,这可以与其他地方提到的preventDefault
结合使用:
$('#myform').submit(ev, function(){
ev.preventDefault();
...
但return false
也应该有用。
答案 3 :(得分:0)
为什么不设置动作参数?
action="javascript:;"
BTW:一个更好的解决方案是将action-Parameter设置为$(window).load(..)。
为什么?因为如果您希望在停用JS时表单可用,则必须这样做。
答案 4 :(得分:0)
如果handler没有返回false,则逻辑问题..或者更有可能是在代码到达返回之前在处理程序中抛出的错误
尝试在处理程序
中的其他代码之前使用event.preventDefault()答案 5 :(得分:0)
function getLogin()
{
var e = window.event;
e.preventDefault();
$username = ...
...
}