2012-12-16 130 views
0

我想知道是否有人可以幫助我。我想根據從列表中選擇的複選框生成一串用戶標識。根據選中的複選框選擇相關的隱藏值

我當前的代碼是:

<fieldset id="engineers" data-role="controlgroup"> 
@foreach (var item in Model.Maintenance_Team_List) 
{ 
<label><input type="checkbox" name="Username"  /> 
@item.Username</label>@Html.Hidden("Booked_Engineer_ID",item.UserID) 
} 
</fieldset> 

我已經使用jQuery檢查每個用戶名複選框是選中還是沒試過。從那裏我試圖找到相應的requested_engineer_id。

var listed = $('#Username input:checked').each(function() { 
     $("#engineer_div").find('#Booked_Engineer_ID').text(); 
    }); 

但是,這似乎並沒有選擇任何東西。我正在尋找一個簡單的輸出,例如23,10,11,1,其中這些值表示所選複選框的數據,位於requested_engineer_id隱藏字段中。

感謝您的任何幫助。

+0

你不能在一個頁面中重複ID ...他們必須是唯一的定義....使用類instaed – charlietfl

回答

1

首先,要獲得輸入字段的值,您應該使用val()而不是text()

但更重要的是,你的算法做了奇怪的事情。我想你想要得到的東西是這樣的:

var listed = []; 
$('input[name=Username]:checked').each(function (index, element) { 
    var id = $(element).parent('label').next('input[name=Booked_Engineer_ID]').val(); 
    listed.push(id); 
}); 
var simpleOutput = listed.join(); 

UPDATE:

在你們這樣我好建議使用數據的情況下屬性,而不是隱藏字段:

<fieldset id="engineers" data-role="controlgroup"> 
@foreach (var item in Model.Maintenance_Team_List) 
{ 
    <label> 
     <input type="checkbox" data-userId="@item.UserID" /> 
     @item.Username 
    </label> 
} 
</fieldset> 

和腳本:

var listed = []; 
$('#engineers input:checked').each(function() { 
    var id = $(this).data("userId"); 
    listed.push(id); 
}); 
var simpleOutput = listed.join(); 
+0

謝謝你在正確的方向微調。我將發佈我編輯的版本。 – munkee

+0

偉大的編輯:)我甚至沒有想過使用數據屬性,現在很好很簡單! – munkee

0

我無法獲得上述代碼工作很正確,但它促使我去正確的方向,併產生以下內容:

var listed = []; 
    $('input[name=Username]:checked').each(function() { 

     var ID = $(this).parent().next().val(); 
     listed.push(ID) 
    }); 

    var SimpleOutput = listed.join(); 

愛jquerys鏈接。

+0

很高興幫助:) – andrewpey

+1

請檢查一下答案更新。 – andrewpey

相關問題