[英]Mapping multiple <select> to <input>
似乎確實應該有一種更好的方法,而不是將腳本粘貼到我的頁面上,但是我對js不太滿意,我真的可以使用一些指向正確方向的指針。 “有效”代碼如下。
var select;
var i;
select = ['division', 'account_exec', 'badge_printing', 'attendance_tracking', 'lead_retrieval','access_control', 'general_session', 'breakout_rooms', 'exhibit_floor'];
for (i = 0; i < select.length; ++i) {
$( "<script>$(function(){$('select[name=" + select[i] + "]').change(function(){var selected=$(this).val();$('input[name=input_" + select[i] + "]').val(selected);});});<\/script>" ).appendTo("body");
}
我不同意這種方法。 實際上,您應該做的是將這些名稱添加到HTML元素上,而不是數組上。 如果更改名稱等會怎樣? 更容易用HTML而不是JS保留名稱和ID等,以提高可讀性並減少錯誤
您可以將“ ID”分配給data-name
屬性(或您真正想要的任何屬性)。
例:
<div id="someID">
<select data-name="division">
<option value="something">Text1</option>
.....
</select>
<input data-name="division" value="" />
....
....
</div>
現在,您使用on
事件-這樣做的目的是僅將一個事件分配給ID,並告訴它“監視”已changed
事件的選擇。
$('#someID').on('change','select', function() {
var $this = $(this),
name = $this.data('name'),
$input = $('#someID').find('input[data-name="' + name + '"]"');
$input.val($this.val());
});
您的代碼應如下所示:
$(function(){
var select = [
'division',
'account_exec',
'badge_printing',
'attendance_tracking',
'lead_retrieval',
'access_control',
'general_session',
'breakout_rooms',
'exhibit_floor'
];
for (var i = 0; i < select.length; ++i) {
$('select[name="' + select[i] + '"]').on('change', function(){
$('input[name="input_' + select[i] + '"]').val($(this).val());
});
};
});
$(this).val()
是否具有您期望的值,但是您可以對其進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.