2014-11-23 43 views
-1

我想将选择列表中的选定选项添加到具有自动创建的每行删除选项的表格中。如何将选定选项动态添加到表格

所以,当我点击删除选项时,整个行应该在表中删除,该选项应该再次在选择列表中可用。

我在表中添加了select选项,但它不显示为<td>,而是显示为<option>

+0

这里是拨弄我的代码http://jsfiddle.net/c8q2sggn/ – user13 2014-11-23 11:30:58

回答

1

我刚刚调整了Fiddle并删除了添加的行。两次调整 - 为了方便起见,我添加了添加的选项值作为数据值属性的添加的行并添加类中删除的Del列:

var row = $('<tr data-value="' + opt.val() + '"><td>' + opt.val() + 
      '</td><td></td><td class="delete">Del</td></tr>'); 

然后我说下面的函数从deletd添加选项行和删除该行:

$("#selectDistriList").on("click", ".delete", function() { 
    dVal = $(this).closest("tr").data("value"); 
    $("#distriList").append('<option value="' + dVal + '">' 
     + dVal + '</option>'); 
    $(this).closest("tr").remove(); 
}); 

更新:对于是否有可能将链接添加到每个选项的注释的问题我刚刚调整了Fiddle一些示例链接。
以下调整:我为每个选项添加了属性data-link,例如,

<option value="A" data-link="http://www.stackoverflow.com">A</option> 

,将被附加到该表中的行被调整为具有链路为对<tr>data-link属性并设置链接到值:

var row = $('<tr data-value="' + opt.val() + '" data-link="' 
      + opt.data("link") + '"><td><a href="' + opt.data("link") 
      + '" target="_blank">' + opt.val() + '</a></td><td></td> 
      <td class="delete">Del</td></tr>'); 

上删除该行的功能单击调整为删除行的data-link值设置为一个附加选项:

$("#selectDistriList").on("click", ".delete", function() { 
    dVal = $(this).closest("tr").data("value"); 
    dLink = $(this).closest("tr").data("link"); 
    $("#distriList").append('<option value="' + dVal + '" data-link="' 
    + dLink + '">' + dVal + '</option>'); 
    $(this).closest("tr").remove(); 
}); 

更新:对于在评论中如何添加多个选择选项的问题我刚刚调整为add功能Fiddle

如下调整:

$('#Add').click(function() { 

if ($('#distriList option:selected').val() != null) { 
    $('#distriList option:selected').each(function() 
    { 
     var tempSelect = $(this).val(); 
     var inbtn = $('#Include').val(); 
     var opt = $('#distriList option[value=' + tempSelect + ']').remove(); 
     var row = $('<tr data-value="' + opt.val() + '" data-link="' + opt.data("link") + '"><td><a href="' + opt.data("link") + '" target="_blank">' + opt.val() + '</a></td><td></td><td class="delete">Del</td></tr>'); 
     row.appendTo('#selectDistriList'); 
     $("#distriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); 
     $("#selectDistriList").attr('selectedIndex', '-1').find("option:selected").removeAttr("selected"); 
     $("#selectDistriList").val(tempSelect); 
    });  
} 
else 
{ 
    alert("Before add please select any position."); 
} 
}); 

而是只增加$('#distriList option:selected')的,因为这只会增加第一个选择的选项.each()将遍历所有选定的选项并添加它们。

参考:http://api.jquery.com/each/

+0

它工作得很好..是否有可能给表中的A,B,C值的链接。每个值都将有其独特的链接。 – user13 2014-11-23 12:25:57

+0

@ user13很高兴我能够帮忙。我已经更新了我的调整答案,以将链接添加到值。 – 2014-11-23 13:43:43

+0

非常感谢它,它完美的工作.. – user13 2014-11-23 14:20:52

0

要添加<option>标签表,但它需要<tr>

var opt = $('#distriList option:selected').remove(); 
var row = $('<tr><td>' + opt.val() + '</td><td>Add</td><td>Del</td></tr>'); 
row.appendTo('#selectDistriList'); 

见更新的jsfiddle:http://jsfiddle.net/c8q2sggn/1/

+0

它的工作原理well..However,如果我是特别的行中点击删除按钮,那么它应该是删除并应在选择列表中提供。如何实现这个? – user13 2014-11-23 11:53:16

+0

查看@matthias_h的答案 – whyleee 2014-11-23 12:00:11

+0

是否可以在表中给出A,B,C值的链接。每个值将有其独特的链接 – user13 2014-11-23 12:42:24