Javascript:如何取消表单提交而不返回false?

时间:2012-03-05 22:58:30

标签: javascript jquery forms

我有一个表单提交代码,它执行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;问题 - 它无法停止提交表单。

6 个答案:

答案 0 :(得分:2)

假设getLogin绑定到表单提交按钮/链接,您可以使用preventDefaultstopPropagation

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()

http://api.jquery.com/event.preventDefault/

答案 5 :(得分:0)

function getLogin()
{
    var e = window.event;
    e.preventDefault();


    $username = ...
    ...

}