2013-09-24 112 views
0

我有具有相同ID的單選按鈕列表。我試圖讀取每個單選按鈕的值,但我的代碼始終只讀取第一個單選按鈕的值。讀取單選按鈕列表的值

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script> 
    $(document).ready(function() { 
     $("#rdodoc").click(function() { 
      var val = $("[id=rdodoc]").val() 
      alert(val); 
     }); 


    }); 
</script> 


@foreach (ReadWord.Models.Document item in ViewBag.lstdocs) 
{ 
    @Html.RadioButton("rdodoc", item.Name) 
    <label>@item.Name</label> 


} 
+1

'.VAL()'只返回第一個選擇的元素的值,你應該通過收集迭代,使用'.each()'方法。此外,ID應該是唯一的,使用屬性選擇器不能解決問題,您以低效的方式選擇元素並且標記無效。 – undefined

回答

2

而不是id使用class="rdodoc",這是做它的正確方法。

$(document).ready(function() { 
    $(".rdodoc").click(function() { 
     var val = $(this).val() 
     alert(val); 
    }); 
}); 

與上面的代碼,當你點擊一個單選按鈕,它的價值將被警告

0

這是不是有效的html有許多具有相同ID的元素。此外,您的選擇器將只將click事件綁定到一個元素。請按照以下方式使用班級:

<script> 
    $(document).ready(function() { 
     $(".rdodoc").click(function() { 
      var values = $('.rdodoc').map(function(e) { return $(this).val(); }); 
      $.each(values, function(e, v) { alert(v); }); 
     }); 
    }); 
</script> 

@foreach (ReadWord.Models.Document item in ViewBag.lstdocs) 
{ 
    @Html.RadioButton("rdodoc", item.Name, new { @class = "rdodoc" }) 
    <label>@item.Name</label> 
} 
0

元素ID應該是唯一的。重複的ID會導致您的html文檔無效,並通過ID訪問這些元素將只返回找到的第一個元素。如果你想分組單選按鈕,那麼使用name屬性來完成。爲了獲得值,您可以使用其唯一ID進行迭代。

+0

此代碼將幫助您獲取數組中的值:var list = $(「。elements」)。map(function(){return $(this).val();})。get(); –

0

你需要在你的javascript中運行一個循環。 現在你只需要獲得1個值,這就是爲什麼你看到第一個值。 並將id更改爲名稱或類。

$(".rdodc").each(function(index) { 
    alert(index + ": " + $(this).val()); 
}); 

這會提醒每個單選按鈕的值。