如何在表单提交上访问事件对象和表单数据(方法...)

时间:2012-02-16 12:37:58

标签: jquery forms events jquery-mobile form-submit

我正在尝试将javascript网站升级到Jquery Mobile网站。我需要阻止默认表单提交以运行我的验证例程并触发ajax表单提交。

我有这个:

HTML

<form name="LoginForm" id="LoginForm" action="some.html" method="post">
  ...
  <input type="submit" onClick="routine('true')" />
</form>

Jquery的:

function rountine(isit){
   if(isit == "true"){
      document.LoginForm.action = "some.html"; 
      }
   console("rountine triggered");

   $("#LoginForm").submit(function(event, data){
       console.log("submission triggered");
       console.log(event);
       console.log(data);
       event.preventDefault();  
       });
 };

问题: 我只收到第一个控制台消息。表单未提交,但控制台上没有显示任何其他内容。我究竟做错了什么?我是否还需要重新指定 action ,还是可以在HTML部分中省略它,也可以在我的rountine函数中动态设置它?

感谢helP!

2 个答案:

答案 0 :(得分:1)

你的行:

$("#LoginForm").submit(function(event, data){

设置事件处理程序以提交表单...请参阅http://api.jquery.com/submit/

这样做:

<form name="LoginForm" id="LoginForm" action="some.html" method="post">
  ...
  <input type="submit"/>
</form>

$(document).ready(function() {
  $("#LoginForm").submit(function(event){
     // actions you want to perform on the form submitting
     if(isit == "true"){
        document.LoginForm.action = "some.html"; 
     }
     console("rountine triggered");
     console.log("submission triggered");
     console.log(event); // event is an object - dont expect much in the console
     event.preventDefault();  
   });
});

这将设置提交侦听器,函数中的代码将在提交时执行 - event.preventDefault();将阻止表单提交。

答案 1 :(得分:0)

您正在做的是为事件添加处理程序,而不是执行它。 因此,一旦添加此处理程序,您应该也会看到所有其他控制台消息。

$("#LoginForm").submit(function() {
  .. // This will get executed when submit is pressed
});

要调用submit事件,请调用不带参数的$("#LoginForm").submit(),这将触发提交事件。