9

渲染页面时,val()多重选择的 设置为单个值。例如,$("#my_select_box").val(1); 然后用户在多选框中选择了一个附加值。

提交表单时,只提交新选择的值,而不是之前设置的值。而在 Firefox 中调试时,该.val()函数返回一个包含两个值的数组(前一个值和新选择的值)。为什么会这样?

4

3 回答 3

32

如果你用 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
于 2013-01-21T01:47:50.840 回答
3

好吧,没有代码我们无法确定。但是,当您想要传入多个参数时,您必须在 [ ] 括号中给出该输入的名称值。前任。"name[]" 所以为了让服务器知道实际上有两个值。

于 2011-08-23T00:56:38.823 回答
0

很难说没有代码该怎么做。

但是,如果您想要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/

于 2011-08-23T01:23:16.413 回答