渲染页面时,val()多重选择的 设置为单个值。例如,$("#my_select_box").val(1);
然后用户在多选框中选择了一个附加值。
提交表单时,只提交新选择的值,而不是之前设置的值。而在 Firefox 中调试时,该.val()函数返回一个包含两个值的数组(前一个值和新选择的值)。为什么会这样?
渲染页面时,val()多重选择的 设置为单个值。例如,$("#my_select_box").val(1);
然后用户在多选框中选择了一个附加值。
提交表单时,只提交新选择的值,而不是之前设置的值。而在 Firefox 中调试时,该.val()函数返回一个包含两个值的数组(前一个值和新选择的值)。为什么会这样?
如果你用 PHP 编程,问题就出在那儿。使用多选输入时,PHP 要求您在输入名称后有一对空括号。例如:
<select name="select[]" multiple="multiple">
而不仅仅是
<select name="select" multiple="multiple">
如果您不能或不会这样做(也许您无权访问底层 HTML),那么您也可以像这样捕获 POST 数据:
$data_from_post = file_get_contents("php://input");
var_dump($data_from_post);
你会看到一个这样的字符串,你可以使用:
select=one&select=two&select=three&button=submit
好吧,没有代码我们无法确定。但是,当您想要传入多个参数时,您必须在 [ ] 括号中给出该输入的名称值。前任。"name[]" 所以为了让服务器知道实际上有两个值。
很难说没有代码该怎么做。
但是,如果您想要option标记的selected和选中的,则可以按如下方式访问它们:
option[selected="selected"]对于你设置的那个
和
option:selected对于用户选择的那个
所以像这样的事情......
$('#submit').click(function(){
var s = $('#my_select_box option[selected="selected"]').val();
var t = $('#my_select_box option:selected').val();
alert("Set: " + s + ", Chosen: " + t);
});
示例:http: //jsfiddle.net/jasongennaro/pZesG/1/