表单仍然在JS中返回false返回false

时间:2010-05-31 14:38:08

标签: javascript jquery html

似乎#frmToDo仍然会发布帖子

<form id="frmToDo" name="frmToDo">
    ...
    <a id="btnSubmit" href="javascript:document.frmToDo.submit();">Add</a>

google.load("jquery", 1);
google.load("jqueryui", 1);

google.setOnLoadCallback(function() {
    ...

    $("#frmToDo").submit(function() {
        return false;
...

为什么会发生这种情况?可能是因为href="javascript:document.frmToDo.submit()。我如何提交带有该链接的表单(我没有使用<input type="submit" />,因为样式问题,似乎按钮更难设计样式,尤其是在不同的浏览器中)AJAX方式?

4 个答案:

答案 0 :(得分:3)

你说你没有使用<input type="submit" />因为造型所以为什么不使用,

<a id="btnSubmit" href="#" onclick="return false">Add</a>

google.setOnLoadCallback(function() {

   //...OTHER LOGIC

      $('#btnSubmit').click(function(){
          var form = $(this).parent().find('form');
          var formdata = $(form).serialize();
          $.ajax({
             url : 'ajax/receiver.php',
             data : formdata,
             success : function(responce)
             {
                alert(responce); // do what you want here
             }
          })
      });
   //...OTHER LOGIC
});

答案 1 :(得分:1)

$('#btnSubmit').click(function(){
    $("#frmToDo").submit();
})

将其用作<a>

上的点击处理程序

答案 2 :(得分:0)

如果你想用ajax方式做,那就不需要提交了。实际上,“形式”元素是不必要的。只需使用ajax调用。

http://api.jquery.com/jQuery.ajax/

答案 3 :(得分:0)

如上所述,您可以直接通过click方法附加到事件。但是,如果您想使用您的方法,您也应该能够这样做。

我认为,因为您通过DOM API附加到事件而不是使用内联函数,所以您需要显式取消事件而不是仅返回false,至少对于表单提交。我相信这对你有用。

$('#frmToDo').submit(function(e){
  e.preventDefault();
});