2014-09-24 76 views
0

我在我的視圖中有以下代碼。它有兩個同名的單選按鈕。它可以在控制器中正常工作,我可以使用單選按鈕名稱訪問表格集合,該選項使我可以選擇是或否值 因此,如果用戶在表格中選擇「否」,我將訪問它[[rbc]],它給我值「不」在jquery中訪問具有相同名稱的單選按鈕

雖然這不是在jQuery中的情況下,我不能訪問這個單選按鈕來檢查用戶是否選擇了是或否,請建議我如何在jQuery中實現它。

如果必填字段爲「是」,我將爲每個字段分配一個類「驗證」,否則爲空。爲了驗證從jquery控件(客戶端)

當前jQuery代碼迭代所有的單選按鈕。但我需要它迭代一次具有相同名稱的單選按鈕一次。

控制器

 signup.Controls = new List<MembershipControls>(); 

     foreach(var controlItem in _membershipcontrols.Table.ToList()) 
     { 
      signup.Controls.Add(new MembershipControls() 
      { 
       Caption = controlItem.Caption, 
       Content = controlItem.Content, 
       ControlType = controlItem.ControlType, 
       GroupTitle = controlItem.GroupTitle, 
       Mandatory = controlItem.Mandatory == "Yes" ? "validate" : "", 
       Name = controlItem.Name, 
       UserId = controlItem.UserId 
      }); //modify mandatory field to assign class "validate" and empty to not validate 
     } 




     signup.Groups = new List<Groups>(); 
     signup.Groups = _groups.Table.ToList(); 

     return View("Signup", signup); 

查看

  @foreach (var groups in Model.Groups) 
      { 
        <label style="font-weight:bold">@groups.GroupTitle</label> 

        <div style=" border: 1px solid #CCCCCC;padding:5px"> 

        @foreach (var row in Model.Controls.Where(r => r.GroupTitle == groups.GroupTitle)) 
        { 
         <div style="padding:7px"> 

          @if (row.ControlType == "Single Line Text") 
          { 
           <label>@row.Caption</label> 
           <input type="text" name="@row.Name" class="@row.Mandatory" /> 
          } 
          else if (row.ControlType == "Multi Line Text") 
          { 
           <label>@row.Caption</label> 
           <textarea name="@row.Name" class="@row.Mandatory"></textarea> 
          } 
          else if (row.ControlType == "Yes/No Choice(Radio Buttons)") 
          {        
           <div>  
            <label>@row.Caption</label> 
            &nbsp      
            <input type="radio" name="@row.Name" value="Yes" class="@row.Mandatory"/> &nbsp Yes        
            &nbsp 
            <input type="radio" name="@row.Name" value="No" class="@row.Mandatory"/> &nbsp No 
           </div> 
          } 
          else if (row.ControlType == "Checkbox") 
          { 
           <div> 
            <input type="checkbox" name="@row.Name" class="@row.Mandatory"/> @row.Caption 
           </div> 
          } 
          else if (row.ControlType == "Date") 
          { 
           <div> 
            <label>@row.Caption</label> 
            <input type="date" name="@row.Name" class="@row.Mandatory"/> 
           </div> 
          } 
         </div> 
        } 
       </div> 
       } 

腳本

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#signupform').submit(function() 
    { 
     $(".validate").each(function() {     
      if ($(this).is("input[type=radio]")) {   

       alert($(this).attr('name')); 
       // here is the logic to check whether user has selcted Yes or No 

      } 
     }); 
    }); 
}); 

+0

你的單選按鈕沒有驗證類? – 2014-09-24 12:03:50

回答

2

用作

$('input[name="rbc"]:checked').val() 

DEMO

+0

很容易找到Amit讚賞 – 2016-02-03 08:22:55

0

儘量避免在jQuery的僞選擇器([類型=無線電])它們具有不良的性能。使用類選擇器。把一個類你的收音機,那麼這樣做:

$('.my-class:checked').val(); 

如果你不想使用:選中直接就可以使用它作爲一個是

$('.my.class').each(function(){ 
    if ($(this).is(':checked')) { /* magic */ } 
}); 
+0

我修改了代碼。基本上我已經分配一個類到必填字段爲了驗證他們從jquery。控制名稱也來自服務器端。所以我不知道控制名稱。我只使用類名「validate」訪問控件。 – 2014-09-24 12:24:02

+0

所以我們假設在一個分區內有兩個單選按鈕作爲一個組。我需要訪問哪個用戶選擇了是或否 – 2014-09-24 12:25:58

+0

其迭代jquery中的所有單選按鈕。我只需要訪問它對每個單選按鈕具有相同的名稱。 – 2014-09-24 12:32:01

0

你應該得到:checked項目僅適用於您的單選按鈕:

$(function() { 
    $('button').on('click', function() { 
     $('.validate:checked').each(function() { 
      var name = $(this).attr('name'); 
      var value = $(this).val(); 
      alert(name + ' : ' + value); 
     }); 
    }); 
}); 

JSFiddle Demo

+0

如果我們已經知道單選按鈕的名稱,那麼您建議的鏈接工作正常。但是如果我們正在迭代類並訪問控件呢。請看我修改過的代碼,並建議 – 2014-09-24 12:48:47

+0

@HammadBukhari檢查更新的答案:) – dashtinejad 2014-09-24 12:52:49

+0

這隻適用於選中的單選按鈕。如果用戶沒有選中某個單選按鈕,該怎麼辦?那麼它不會顯示它。我需要檢查所有用戶是否選擇了否或是或不是他們。 – 2014-09-25 04:40:34

相關問題