我正在尝试将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!
答案 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()
,这将触发提交事件。