2016-11-19 58 views
3

我想將多個選定值分配給不同的文本字段。如果我爲四個不同的文本字段選擇了四個選項分配值。如何使用jquery將多個選定值分配給文本字段

HTML代碼

<select name="garden" multiple="multiple"> 
    <option>Flowers</option> 
    <option>Shrubs</option> 
    <option>Trees</option> 
    <option>Bushes</option> 
    <option>Grass</option> 
    <option>Dirt</option> 
</select> 
<div></div> 
<input type="text" id="opt1" /> 
<input type="text" id="opt2"/> 
<input type="text" id="opt3" /> 
<input type="text" id="opt4" /> 

我做了什麼樣的jQuery代碼

<script> 
$("select") 
    .change(function() { 
    var str = ""; 
    $("select option:selected").each(function() { 
     str += $(this).text() + " "; 
    }); 
    $("div").text(str); 

    }); 
    }) 
    .trigger("change"); 
</script> 

請人幫助這一點。感謝貴公司

回答

3

基於所選的選項指數id值(你可以得到的索引值回調函數的each()方法的第一個參數)和更新利用生成的id選擇元素的值。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="garden" multiple="multiple"> 
 
    <option>Flowers</option> 
 
    <option>Shrubs</option> 
 
    <option>Trees</option> 
 
    <option>Bushes</option> 
 
    <option>Grass</option> 
 
    <option>Dirt</option> 
 
</select> 
 
<div></div> 
 
<input type="text" id="opt1" /> 
 
<input type="text" id="opt2" /> 
 
<input type="text" id="opt3" /> 
 
<input type="text" id="opt4" /> 
 

 
<script> 
 
    $("select").change(function() { 
 
     var str = ""; 
 
     $("select option:selected").each(function(i) { 
 
     str += $(this).text() + " "; 
 
     $('#opt' + (i + 1)).val($(this).text()); 
 
     }); 
 
     $("div").text(str); 
 
    }) 
 
    .trigger("change"); 
 
</script>


的更好的方法將使用通用class用於輸入,您可以通過使用jQuery的:eq()僞類選擇指數得到元素。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="garden" multiple="multiple"> 
 
    <option>Flowers</option> 
 
    <option>Shrubs</option> 
 
    <option>Trees</option> 
 
    <option>Bushes</option> 
 
    <option>Grass</option> 
 
    <option>Dirt</option> 
 
</select> 
 
<div></div> 
 
<input type="text" class="opt" /> 
 
<input type="text" class="opt" /> 
 
<input type="text" class="opt" /> 
 
<input type="text" class="opt" /> 
 

 
<script> 
 
    $("select").change(function() { 
 
     var str = ""; 
 
     $("select option:selected").each(function(i) { 
 
     str += $(this).text() + " "; 
 
     $('.opt:eq(' + i + ')').val($(this).text()); 
 
     }); 
 
     $("div").text(str); 
 
    }) 
 
    .trigger("change"); 
 
</script>


UPDATE:爲了限制選擇的數量總是緩存在全局變量中選定的值,當選擇的選項計數大於預期的恢復。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="garden" multiple="multiple"> 
 
    <option>Flowers</option> 
 
    <option>Shrubs</option> 
 
    <option>Trees</option> 
 
    <option>Bushes</option> 
 
    <option>Grass</option> 
 
    <option>Dirt</option> 
 
</select> 
 
<div></div> 
 
<input type="text" class="opt" /> 
 
<input type="text" class="opt" /> 
 
<input type="text" class="opt" /> 
 
<input type="text" class="opt" /> 
 

 
<script> 
 
    var sel; 
 
    $("select").change(function() { 
 
     var str = "", 
 
     $selected = $("select option:selected"); 
 

 
     if ($selected.length > 4) 
 
     $(this).val(sel); 
 
     else 
 
     sel = $(this).val(); 
 

 
     $selected.each(function(i) { 
 
     str += $(this).text() + " "; 
 
     $('.opt:eq(' + i + ')').val($(this).text()); 
 
     }); 
 
     $("div").text(str); 
 
    }) 
 
    .trigger("change"); 
 
</script>

參見:Multiple Select limit number of selection

+0

致謝ids兄弟..它的正常工作幹得 – Rijo

+0

@Rijo:很高興幫助:) –

+0

@Rijo,如果它的正確解決方案..你可以標記爲接受答案。 – Vikrant

1

的解決方案是爲,

使用trigger在Jquery的

Working Demo

$("select option:selected").each(function(i) { 
    if(i <= 4) { 
     resVal += $(this).text() + " "; 
     $('#opt' + (i + 1)).val($(this).text()); 
    } 
    }); 

    $("div").text(resVal); 
+0

答案是正確的。感謝這個艱苦的工作:) – Rijo

+0

當我取消如何重置所有文本字段中再次 – Rijo

+0

@Rijo工作取消部分 – Vikrant

1

試試like。每次選擇分配不同的文本框。增量每次click.It的計數器將匹配文本

var count=1; 
 
$("select").change(function() { 
 
    var str = ""; 
 
    $("select").each(function() { 
 
     str += $(this).val() + " "; 
 
    }); 
 
     $("div").text(str); 
 

 
     $('#opt'+count).val(str); 
 
    count ++; 
 
     
 
    }); 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select name="garden" multiple="multiple"> 
 
    <option>Flowers</option> 
 
    <option>Shrubs</option> 
 
    <option>Trees</option> 
 
    <option>Bushes</option> 
 
    <option>Grass</option> 
 
    <option>Dirt</option> 
 
</select> 
 
<div></div> 
 
<input type="text" id="opt1" /> 
 
<input type="text" id="opt2"/> 
 
<input type="text" id="opt3" /> 
 
<input type="text" id="opt4" />

+0

這個答案也蠻好:) – Rijo

+0

其只允許4選擇。查答案@Rijo – prasanth

相關問題