0

我的代码在这里http://jsfiddle.net/2BcS3/

$("#b").click(function(){
 //should output: [user selection] - []
 alert("[" + $("#s").val() + "] - [" + $("#i").val() + "]"); 


 $("#i").val('nice');    
 //should output: [user selection] - [nice]
 alert("[" + $("#s").val() + "] - [" + $("#i").val() + "]"); 

 //should output: [nice] - [nice]
 $("#s").val($("#i").val());
 alert("[" + $("#s").val() + "] - [" + $("#i").val() + "]"); 
});

和html

<select id='s'>
 <option value='0'>select</option>
 <option value='1'>ok</option>
 <option value='2'>no</option>
</select>
<input id='i' type='hidden' />
<button type='button' id='b'>go</button>

你会马上注意到这个问题。我正在尝试将选择的值动态更改为隐藏字段中输入的值。由于某种原因,选择不接受新值并自动切换到选择列表的第一个值!!!

4

3 回答 3

1

问题是您试图强制选择具有其选项中不存在的值,如果您添加<option value='nice'>nice!</option>到选择中,您的代码将起作用......

JSFiddle Demo

于 2013-07-17T22:29:23.883 回答
0

试试option:selected,比如:

$("#b").click(function(){
  //should output: [user selection] - []
  alert("[" + $("#s").val() + "] - [" + $("#i").val() + "]"); 


  $("#i").val('nice');    
  //should output: [user selection] - [nice]
  alert("[" + $("#s").val() + "] - [" + $("#i").val() + "]"); 

  //should output: [nice] - [nice]
  $("#s option:selected").attr('value', $("#i").val());
  alert("[" + $("#s").val() + "] - [" + $("#i").val() + "]"); 
});

我在http://jsfiddle.net/2BcS3/3/更新了你的小提琴。

于 2013-07-17T22:56:05.070 回答
0

您需要使用当前选定的选项,而不仅仅是“选择”元素的值。

$("#s :selected").val();

您的脚本应该看起来更像这样:

$("#b").click(function(){
    //should output: [user selection] - []
    alert("[" + $("#s :selected").val() + "] - [" + $("#i").val() + "]"); 


    $("#i").val('nice');
    //should output: [user selection] - [nice]
    alert("[" + $("#s :selected").val() + "] - [" + $("#i").val() + "]"); 

    //should output: [nice] - [nice]
    $("#s :selected").val($("#i").val());
    alert("[" + $("#s :selected").val() + "] - [" + $("#i").val() + "]"); 
});
于 2013-07-17T22:29:17.023 回答