2016-05-29 94 views
0

我想要做的是將多個輸入添加到此ID爲「addedRoles」的div中。它首先是這樣的:JQuery無法從動態創建的輸入中選擇值

<div id="addedRoles" class="form-group"> 
    <div class="col-md-10"> 
     <input class="addedRole form-control" type="text" name="newRoleNames" /> 
    </div> 
</div> 

我增加了更多的div使用這些代碼:

$('#btnAddNewRole').click(function (event) { 
      $('#addedRoles').append(
       '<div class="col-md-10">' 
       + '<input class="addedRole form-control" type="text" name="newRoleNames" />' 
       + '</div>'); 
     }); 

在那之後,我想選擇所有的輸入值,但我得到的是從第一個值硬編碼輸入。是因爲輸入是動態創建的嗎?如何從他們身上獲得價值?由於

+0

如何從所有的輸入選擇值? – Webman

+0

對不起,我忘了這部分。我嘗試選擇所有的輸入,其名稱屬性爲「newRoleNames」,類別爲「addedRole」,所有子類爲「#addedRoles」,但它們都不起作用。我得到的所有值都來自第一個硬編碼輸入。 – zhiyuan

+0

輸入應該具有唯一的名稱屬性。 – Mohammad

回答

0

對於動態添加的元素。點擊()不火。加上一些類到你的文本框。 Id在整個DOM中應該是唯一的。

對於動態添加的元素,您應該以任一方式。

$(document).on('click','.txtboxClass',function (e) 
{ 
    //do stuff here 
    var userInput = $(this).val(); 
}); 

OR

$('.txtboxClass').on('click',function (e) 
{ 
    //do stuff here 
    var userInput = $(this).val(); 
}); 

如果發現添加類的開銷,那不是一個大問題,你可以使用屬性選擇,以及做。

+1

歡呼它解決了。謝謝。 – zhiyuan

0

嘗試使用類名「addedRole」讓所有價值,因爲「名」屬性必須是唯一的

$("#addedRoles :text").each(function(i, text){ 
    var $val = $(text).val(); 
}) 
+0

對不起,我剛纔在我的評論中提到過它。它只給了我硬編碼輸入的值 – zhiyuan

+0

你可以添加代碼嗎? – Webman

0

嘗試使用下面讓班上所有輸入:

$("#addedRoles :input").each(function(){ 
var input = $(this).val(); 
}); 
+1

據我所知,他在div'addedRoles'中動態添加了div/input,並且需要這些值。這意味着有一個addedRoles的主要股利,他可以得到所有使用的各種 – TheUknown

0

我建議你檢索輸入值這樣的:

$('#addedRoles input').val(); 

但它會在僅匹配元素返回第一個輸入的值。 正確的做法是:

var values = []; 
$('#addedRoles input').each(function(){ 
    values.push($(this).val()); 
}); 

Here's JSFiddle example

+0

歡迎來到SO,謝爾蓋。請避免添加重複的答案 – TheUknown

+0

對不起,但是當我正在寫我的答案我沒有看到你的... –

+0

不用擔心。我通常刷新之前添加答案,以確保它不重複,因爲它只是凌亂的帖子,而不是:) – TheUknown

相關問題