如果我有类似的话:
<form method="post" id="customForm" action="">
//stuff
<div id="copiar">
<button class="button" href="#" id="btnAdd0">
<span class="icon icon3"> </span>
</button>
<button class="button" href="#" id="btnDel0">
<span class="icon icon58"> </span>
</button>
<button class="submeter">
<span class="label">Send</span>
</button>
</div>
</form>
和
<script type="text/javascript">
$(document).ready(function() {
$("#customForm").submit(function() {
var formdata = $("#customForm").serializeArray();
$.ajax({
url: "validation.php",
type: "post",
dataType: "json",
data: formdata,
success: function(data, data1) {
//stuff
});
return false;
});
});
</script>
目前,三个按钮发送表格。我的想法是只允许在此按钮中提交操作:
<button class="submeter">
<span class="label">Send</span>
</button>
我已经尝试$("#customForm > #copiar > button.submeter").submit(function() {
但页面重新加载。所以不行。
有什么想法吗?
答案 0 :(得分:1)
为了防止表单的默认行为,您必须使用preventDefault()
,如下所示:
$(document).ready(function() {
$("#customForm").submit(function(e) {
e.preventDefault();
var formdata = $("#customForm").serializeArray();
$.ajax({
url: "validation.php",
type: "post",
dataType: "json",
data: formdata,
success: function(data, data1) {
//stuff
});
});
$("#customForm button.submeter").click(function() {
$("#customForm").submit();
});
});
答案 1 :(得分:1)
具有href
属性的前两个按钮元素的目的是什么?我怀疑你只是为了格式化/视觉原因而使用按钮而不是常规链接。
无论如何,只需将属性type =“submit”添加到最后一个按钮并删除您为此按钮定义的提交处理程序,它应该可以正常工作。
修改。你还需要调用preventDefault()方法来停止页面重新加载,正如phil klein所指出的
答案 2 :(得分:1)
您必须先停止其他按钮提交,然后再提交。此外,当您为选择器使用ID时,实际上不需要将其与另一个ID组合,例如#customForm&gt; #copiar“
试试这个:
$(document).ready(function() {
$("#customForm").submit(function(e) {
e.preventDefault();
var formdata = $("#customForm").serializeArray();
$.ajax({
url: "validation.php",
type: "post",
dataType: "json",
data: formdata,
success: function(data, data1) {
//stuff
}
});
});
$("#customForm button").click(function(e) {
var me = $(this);
e.preventDefault();
if(me.hasClass("submeter")) $("#customForm").submit();
});
});
正如已经指出的那样,你不需要/想要href =“#”