Jquery与.live,.click和preventDefault有关

时间:2011-01-18 11:39:30

标签: jquery html ajax forms

我的表单有问题。

我想使用jquery ajax来验证数据库的表单,并遇到不同的问题。

1。

$('#formsubmit').click(function(e) {
    e.preventDefault(); // this is not working, the page reloads
});

2

$('#formsubmit').live('click', function(e) {
    e.preventDefault(); //works, but...
    var firstname = $('#firstname').val(); // returns an empty string and ...
    firstname = document.getElementById('firstname'); //does not return anything either
    alert("$('#firstname')"); // returns [object][object] ... should'nt it be [object][html inputelement]
});

到目前为止,我还没有能够点击我的表单的提交按钮来触发ajax加载,因为我无法获取输入字段的值。

我在这里错过了什么吗? 是否可以使用另一种方法: 1.阻止页面重新加载提交 - 单击和 2.获取表单的所有值,并通过ajax将它们发送到我的php脚本 3.等待答案并将其显示在相应的html元素中。

1 个答案:

答案 0 :(得分:1)

问题是你阻止了click事件,而不是submit事件,这就是你想要捕获的事件,如下所示:

$("#formid").live("submit", function(e) {
  e.preventDefault();
  $.post("myPage.php", $(this).serialize(), function(result) { 
    $("#resultContainer").html(result);
  });
});

在上面,我们在<form>上使用.serialize()来获取所有要提交的数据(来自所有成功的输入),就像正常提交一样(使用没有 JavaScript)。


另外,我不能从您的问题中说出来,但请确保您的id属性是唯一的,例如只有一个 id="firstname",如果情况并非如此,那么你会遇到很多问题。