html代码是;
<div>
<label>Categories
<select id="projectSelect" class="list_who_to_mail" name="projectSelect"></select>
</label>
</div>
</div>
</div>
<input name="projectID" id="projectID" type="hidden"></input>
<div>
<div>
<label >Discipline
<select name="disciplineSelect" id="disciplineSelect" class="list_who_to_mail"> </select>
</label>
</div>
</div>
</div>
<input name="categoryID" id="categoryID" type="hidden"></input>
<div>
<div>
<label >Main Group
<select name="main" id="main" class="list_who_to_mail">
<option></option>
<option>Technical</option>
<option>Contracts</option>
<option>Procurement / Logistics</option>
<option>Administrative</option>
<option>Financial</option>
<option>Legal</option>
</select>
</label>
</div>
</div>
</div>
<div >
<div >
<label>Effect on (Part 1)
<select name="observedPhase[]" id="observedPhase" multiple="multiple" class="list_who_to_mail" size="13">
<option>Warranty</option>
<option>Operability</option>
<option>Reliability</option>
<option>Reputation</option>
</select>
</h5></label>
</div>
</div>
</div>
功能是;
$(function () {
$('.list_who_to_mail').on('change', function() {
var id = $(this).attr("id");
var value = $("#"+id).val();
$("#list_mail").append(value);
});
});
概念是当用户点击选择字段时,功能将收集字段的ID,并且使用这些ID,它将列出&#34; #list_mail&#34;中的电子邮件。
问题是;当我点击任何选项值时,所有ID都在div中并排写入。如何忽略先前的选择并只写入div上每个选项的最后选择的id?考虑&#34; disciplineSelect&#34;,name =&#34; main&#34;,categoryID&#34;和#34; observePhase []&#34;。
提前致谢
编辑:语言
答案 0 :(得分:1)
要覆盖任何先前的值,您应该设置元素的html()
,而不是append()
新的字符串值。试试这个:
$('.list_who_to_mail').on('change', function() {
$("#list_mail").html($(this).val());
});
请注意,您还可以缩短代码,因为this
是对已更改的select
的引用。您无需再按id
选择它。
更新
如果您想从每个选项中获取所选值,可以使用map()
:
$('.list_who_to_mail').on('change', function() {
var values = $('.list_who_to_mail').map(function() {
return $(this).val();
}).get();
$("#list_mail").html(values.join(','));
});
答案 1 :(得分:0)