通过jQuery更改选定选项后刷新选择。

6

我使用jQuery在程序中更新选定的选项,但浏览器中没有任何变化。(也就是说,旧的选中选项仍然被选中,而不是切换到新选择的选项。)有什么建议吗?

谢谢。 --Jeff

我有一个简单的表单,如下所示:

<form id="form1" name="form1" method="" action="">
<p>Assign: 
<select name="assigner" id="assigner">
<option value="Sam" selected="selected">Sam</option>
  <option value="Harry">Harry</option>
  <option value="Fred">Fred</option>
</select>
<input type="button" name="button1" id="button1" value="Submit" />
</p>
<p>    Task A: <select name="assignment[]" id="assigner">
  <option value="Sam">Sam</option>
  <option value="Harry" selected="selected">Harry</option>
  <option value="Fred">Fred</option>
</select>
</p>
<p>    
Task B: <select name="assignment[]" id="assigner">
  <option value="Sam">Sam</option>
  <option value="Harry"  selected="selected">Harry</option>
  <option value="Fred">Fred</option>
</select>
</p>
</form></div>

我的jQuery代码如下:
<script type="text/javascript">
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){
        var form = $(this).parents('form');
        var assigned = form.find(':selected').first().val();
        form.find(':selected').each(function(index){
            $(this).val( assigned ).change();
        });
    }
 );
});
</script>
2个回答

4
我正在使用jQuery通过编程方式更新所选选项。据我所见,你重新设置了所选选项的值,但在实际的框,您需要识别它,然后在其上调用val(),而不是其

我的表单是从数据库查询生成的,因此我不一定知道选择框的ID(甚至不知道表单中会出现多少个)。此外,每个页面上都有多个表单(结构相似)。我想做的是允许用户使用第一个选择框中选择的选项更新表单上的所有SELECT框。因此,用户通过选择Harry并提交来将Harry分配给所有任务。我真正需要的,我想,是一种方法来选择与点击的按钮在同一表单上出现的所有SELECT框。 - jalperin
@jalperin: "我真正需要的,我想,是一种选择所有与点击的按钮出现在同一表单中的SELECT框的方法。" $(this).closest('form').find('select') 可以做到,在按钮的事件处理程序中使用。$(this)将按钮包装在jQuery对象中。closest('form')返回层次结构中最接近的form元素的jQuery对象。然后find('select')查找该表单中的所有select元素。 - T.J. Crowder

1
<form id="form1" name="form1" method="" action="">
    <p>Assign: 
        <select name="assigner" id="assigner">
            <option value="Sam" selected="selected">Sam</option>
            <option value="Harry">Harry</option>
            <option value="Fred">Fred</option>
        </select>
        <input type="button" name="button1" id="button1" value="Submit" />
    </p>
    <p>
        Task A: <select name="assignment[]" id="assigner2">
            <option value="Sam">Sam</option>
            <option value="Harry" selected="selected">Harry</option>
            <option value="Fred">Fred</option>
        </select>
    </p>
    <p>    
        Task B: <select name="assignment[]" id="assigner3">
            <option value="Sam">Sam</option>
            <option value="Harry"  selected="selected">Harry</option>
            <option value="Fred">Fred</option>
        </select>
    </p>
</form>



<script type="text/javascript">
jQuery(document).ready(function(){ 
$('[name="button1"]').click(
    function(){
        var assigned = $("#assigner").val();
        $('#form1 select').val( assigned );
    }
 );
});
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接