我有一个简单的表单,我想提交给JQuery。我的下面的代码几乎可以工作,但表现得很有趣。我有两个按钮,一个提交(序列化)和一个取消(什么都不做)。都指向相同的javascript功能,但是当提交被按下时,弹出一个警告框。在新的页面加载时,单击提交将不会执行任何操作,但如果再次单击它,它将显示警告框,但会显示两次。如果再次点击它,它会弹出3次,依此类推。取消按钮(如果按下)不会执行任何操作,但它也会增加下次单击“提交”时弹出警告框的次数。我看着的例子很多,据我所知,我在做正确此按钮点击JQuery序列化表单
HTML:
<head>
<script src="js/jquery.min.js"></script>
<script src="js/ajax.js"></script>
</head>
<body>
<form id="test" action="">
First name: <input type="text" name="FirstName" value="Mickey" /><br>
Last name: <input type="text" name="LastName" value="Mouse" /><br>
</form>
<button id="tbutton" onclick="test()">Serialize</button>
<button id="fbutton" onclick="test()">do nothing</button>
</body>
我的功能:
function test() {
$("#tbutton").click(function(){
alert($('#test').serialize());
});
}
我想获得的形式信息放入AJAX函数中,因为它在我的项目的其他地方使用,并且表单数据并不总是被使用。
function get_node_data(u_id) {
var xmlhttp;
var ser_new_area = "";
$("#move").click(function(){
alert($('#move_node').serialize());
var ser_new_area = $('#move_node').serialize();
});
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("data_main").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST", "AJAX_node_overview.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("u_id=" + u_id + "&" + ser_new_area);
}
我们没有你的ajax.js代码。你可以在[JSFIDDLE](http://jsfiddle.net/)中发布你的代码吗?更容易找到问题。 –
为什么你有两个绑定到同一个按钮?您应该删除onclick属性并使用$(selector).click()绑定 – mart
每次调用函数test()时,都会将新的单击事件绑定到您的按钮。您必须仅在页面加载时绑定事件。 –