jQuery将select值中的值复制下拉到所有下拉列表

时间:2012-02-18 00:32:32

标签: jquery

我有一个循环数据库的表单,并将表单显示给用户。用户应该将下拉值更改为Add Duplicate或Move,但在许多情况下,它们都将是相同的。所以,我想给他们一个“复制”功能,他们可以点击一个图标。这将触发一个函数来获取所选输入名称的值(就在同一个表格单元格中的图标前面(td),并将列表中的其他项目设置为相同的值.ID是唯一的,我想我可以使用$('#id')。val()来获取值,但即使这样也无效。

            <tr id="row_653"> <-- this value increments -->
            <td>xtipi208_c_dl8453</td>
            <td>Dalllas</td>
            <td>ibm</td>
            <td>SLPAR on p570</td>
            <td>2012-04-15</td>
            <td>dl8453</td>
            <td>mt1933</td>
            <td><select name="systemAction_653" id="SystemAction_653" class="systemAction">
                    <option value="0">Action Required</option>
                    <option value="copy">Add Dup</option>
                    <option value="move">Move</option>
                </select>
                <span class="ui-icon ui-icon-copy vtip replicate" id="select_resource_653" title="Copy this value down the list." style="float: right;" name="systemAction" systemid="653" cntr="13"></span></td>
        </tr>

这是我正在使用的JS:

$('.replicate').live("click",function(){
    var nm=$(this).attr('name');
    var cntr=$(this).attr('cntr');
    var systemID=$(this).attr('systemID');
    var vl=$(this).parent().prev().find("select").val();

    //  alert(nm + ' ' + cntr + ' ' + systemID + ' ' + vl);  //for vl, I'm getting undefined

    $('[name="'+nm+'"][systemID="'+ systemID + '"]').each(function() {
    if ($(this).attr("cntr") >= cntr) 
        $(this).parent().prev().find("select").val(vl);
      });
});

2 个答案:

答案 0 :(得分:0)

从我收集到的内容中,您在页面上有一堆<select>,它们可以具有相同的选定值,对吧?而不是强迫用户为每个<select>选择相同的元素,而你想要实现一个将它们全部设置为相同选定值的按钮,是否正确?

如果是这样,那么这就是诀窍:

http://jsfiddle.net/TS3gB/8/

当然它不能无缝地融入现有的代码库,但应该为您提供方法和洞察力,以便根据您的需要进行修改。

如果我误解了您的问题,请告诉我,我会尝试进一步帮助和/或删除此答案。

答案 1 :(得分:0)

很难确定,但可能就像这样简单:

$('table').on("click", "button.copy_down", function(){
    var $this = $(this);
    var vl = $this.siblings("select.systemAction").val();
    $this.closest("tr").nextAll().find("select.systemAction").val(vl);
});

jsFiddle