似乎被问了几次,但我找不到解决方案。
<form id="foo">
<div class="g1">
<input type="radio" data-next="2" name="op1[]" value="1">
<input type="radio" data-next="2" name="op1[]" value="2">
<input type="radio" data-next="2" name="op1[]" value="3">
</div>
<div class="g2">
<input type="radio" data-next="3" name="op2[]" value="1">
<input type="radio" data-next="3" name="op2[]" value="5">
<input type="radio" data-next="3" name="op2[]" value="3">
</div>
<div class="g3">
<input type="radio" data-send="1" name="op3[]" value="6">
<input type="radio" data-send="1" name="op3[]" value="5">
<input type="radio" data-send="1" name="op3[]" value="3">
</div>
</form>
这是我的实际代码的基础,但相同的概念,g2和g3是隐藏的,当用户从 g1 中选择一个选项时,它会显示下一个块,用户从g2中选择并显示g3 ...
当用户从g3组它通过 ajax 提交表单。
问题是它提交了两次表单,第一次只发送选项 1 和 2,第二次发送的是整个表单。
如果我使用event.preventDefault();它只提交一次我想要的表格,问题是没有发送op3
$('[data-send]').on('click', function(e) {
e.preventDefault();
var formdata = $('form#foo').serialize();
// next is a regular ajax, post, dataType: 'json'... etc
})
因此,通过使用event.preventDefault();它不会发送我的最后一个单选值,如果我不发送,它会提交两次表单,如果我使用,return false;结果与preventDefault();