如何使用jQuery标记基于初始值选择的<select>选项?</select>

时间:2012-08-10 10:25:50

标签: jquery

我有一个有50多行的屏幕,可以使用TopidID。在那个屏幕上,我有一个 可能具有大量行的网格。作为每一行的替代品 我有很多选择,只用下面的一项来填充我的选择:

<td> 
<select title="X" data-clicked="N" data-list="N" id="input_TempRowKey_73" name="rowKey_73" class="select-topic">
   <option value="0307">ABC</option>
   </select>
</td>

当用户第一次点击任何这些行选择时,我会更改selectid的内容并复制TopidID <select>中的许多选项。代码有效并且操作很快发生,因此用户不知道添加了新选项。

 .on('click', '.select-topic', function () {
        if ($(this).attr('data-list') == "N") {
            $(this).attr('data-list', 'Y')
            var topicSelectHtml = $('#TopicID').clone().find("optgroup:first").remove().end().find("option[value$='**']").remove().end().html();
            $(this).html(topicSelectHtml);
            $(this).attr('data-clicked', 'Y')
        }
        return false;
    })

但是我有问题。当用户单击时,将显示新列表和原始列表 不再选择所选的值(在本例中为ABC)。

有没有办法可以做到以下几点:

  1. 将原始值存储在选择中(在本例中为0307和ABC)
  2. 将新选项复制到新的较长选项列表中,并将列表中的选项标记为“已选择”,以匹配以前的选项(在本例中为0307和ABC)
  3. 这是TopicID的格式。这是非常标准的代码:

    <select id="TopicID">
       <optgroup label="Admin">
          <option value="0000">All Topics</option>
       </optgroup>
       <optgroup label="X">
          <option value="0307">ABC</option>
          <option value="0308">DEF</option>
       </optgroup>
    </select>
    

1 个答案:

答案 0 :(得分:0)

实际上非常简单(你的代码比你还需要添加的代码更难):

function dropdownlistprocessing () {

    var selectedval = $("#mydropdown").val();

    // now process your dropdownlist

    $("#mydropdown").val(selectedval);
}

修改:如您所见,如果您使用.val(),则获取所选值。如果您使用.val(foo)传递值,则会在下拉列表中设置选择项。

<强> EDIT2 根据下面的评论,我认为你想要这个吗?

function dropdownlistprocessing () {

    var selectedval = $("#mydropdown_A").val();

    // now process your dropdownlist

    $("#mydropdown_B").val(selectedval);
}