我遇到两个表单的问题,即由同一个按钮提交。 提交第一个表单时,它被隐藏,另一个表单显示。 现在,当我单击第二个表单上的按钮时,变量值仍然包含“给”'来自第一种形式的选择框。
我做错了什么?
Jquery代码:
$('.submit_button').click(function() {
var value = $(".input_action").val();
alert(value);
switch(value) {
case 'give':
$('#content_wrapper').hide();
$('#send_wrapper').show();
break;
default:
alert("default");
break;
}
});
<小时/> Html代码: 表单1:
<div id='content_wrapper'>
<form class='form_content' method='post' action=''>
<select name='action' class='input_action'>
<option selected='give'>Give</option>
</select>
<input class='submit_button' type='button' name='button' value='submit'>
</form>
<小时/> 表单2:
<div id='send_wrapper'>
<form name='form_content' class='form_content' method='post' action=''>
<input name='input_action' class='input_action' value='' type='hidden'>
<input class='submit_button' type='button' name='button' value='submit'>
</form>
</div>
答案 0 :(得分:1)
$(".input_action").val()
将始终为您提供与文档中匹配的第一个元素的值。
如果你想从当前表单中获取一个表单,那么你需要找到当前表单,然后在其中找到匹配元素。
事件处理程序的上下文将是单击的元素,因此您可以使用this
获取该内容。
您可以使用form
属性获取表单。
然后,您可以使用jQuery find
方法获取所需的元素。
var value = $( this.form ).find('.input_action').val();
答案 1 :(得分:1)
您的问题是 - 您找不到合适的.input_action
元素。
试试这个:
$('.submit_button').click(function() {
var form = $(this).parent("form");
var value = form.find(".input_action").val();
alert(value);
switch(value) {
case 'give':
$('#content_wrapper').hide();
$('#send_wrapper').show();
break;
default:
alert("default");
break;
}
});
答案 2 :(得分:0)
首先关闭你的第一个div
<div id='content_wrapper'>
<form class='form_content' method='post' action=''>
<select name='action' class='input_action'>
<option selected='give'>Give</option>
</select>
<input class='submit_button' type='button' name='button' value='submit'>
</form>
</div>
你的第二个表格是好的
并在你的jquery脚本中将'give'大小写改为'Give'
这是一个fiddle