2013-06-20 55 views
1

我在重置單選按鈕並檢查時有2個問題。重置單選按鈕並使用jQuery進行檢查

1期。

  • 我通過這個按鈕檢查或選擇(第1行)單選按鈕 Check Option 1, Check Option 2, Check Option 3

  • 其工作的罰款第1次而已,例如,如果我按一下按鈕Check Option 1, Check Option 2, Check Option 3它將檢查單選按鈕正確地根據它的價值。

  • 如果再次單擊按鈕Check Option 1, Check Option 2, Check Option 3它不起作用。

第2期。

  • 我需要重置爲默認點擊Reset button檢查值。例如見第二行。

  • 重置不起作用,如果我通過Check Option 1, Check Option 2, Check Option 3檢查它。如果我通過手動檢查其工作正常。

  • 但即時使用$('input[name=rdoSample][value=' + value.Rdovalue + ']').attr('checked', 'checked');因爲即時通訊從數據庫中獲得價值,我必須根據其價值進行檢查。

    FIDDLE DEMO

    <title>Testing</title> 
    <script src="scripts/jquery-1.10.1.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    
        $(document).ready(function() { 
    
         $('#btnReset').click(function() { 
          $('input[type=radio]').prop('checked', function() { 
           return this.getAttribute('checked') == 'checked'; 
          }); 
         }); 
    
         $('#btnCheck1').click(function() { 
          $('input[name=rdoSample][value="a"]').attr('checked', 'checked'); 
    
         }); 
    
         $('#btnCheck2').click(function() { 
          $('input[name=rdoSample][value="b"]').attr('checked', 'checked'); 
         }); 
    
         $('#btnCheck3').click(function() { 
          $('input[name=rdoSample][value="c"]').attr('checked', 'checked'); 
         }); 
    
        }); 
    
    </script> 
    

    <div> 
        <table cellpadding="0" cellspacing="0" border="1"> 
         <tr> 
          <td> 
           1) 
          </td> 
          <td> 
           <input type="radio" name="rdoSample" value="a" checked="checked" /> 
           a 
           <input type="radio" name="rdoSample" value="b" /> 
           b 
           <input type="radio" name="rdoSample" value="c" /> 
           c 
          </td> 
          <td> 
           <input type="button" value="Check Option 1" id="btnCheck1" /> 
           <input type="button" value="Check Option 2" id="btnCheck2" /> 
           <input type="button" value="Check Option 3" id="btnCheck3" /> 
          </td> 
         </tr> 
         <tr> 
          <td> 
           2) 
          </td> 
          <td> 
           <input type="radio" name="rdoSample1" value="11" checked="checked" /> 
           11 
           <input type="radio" name="rdoSample1" value="22" /> 
           22 
           <input type="radio" name="rdoSample1" value="33" /> 
           33 
          </td> 
         </tr> 
         <tr> 
          <td colspan="3" align="center"> 
           <input type="button" value="Reset" id="btnReset" /> 
          </td> 
         </tr> 
        </table> 
    </div> 
    

回答

4

使用prop而不是attr可以像這樣更改檢查的屬性。

$('input[name=rdoSample][value="a"]').prop('checked', 'checked'); 

Js Fiddle

+0

謝謝薩欽。它的工作正常。當我使用'attr'時,你能解釋它不工作嗎? –

+1

@LakshmanaKumar看看http://stackoverflow.com/questions/5874652/prop-vs-attr – Sachin

1

你應該.prop("checked,...取代.attr("checked",...

有一個difference between an attribute and a property。引用jQuery的文檔:

然而,最重要的概念要記住檢查的屬性是它不符合checked屬性。該屬性實際上對應於defaultChecked屬性,並且應僅用於設置複選框的初始值。檢查的屬性值不會隨複選框的狀態而變化,而檢查的屬性值會變化。


因此,使用這樣的事情,就會使一切工作:

$("input[name=<name>][value=<value>]").prop(
     "checked", true); 

還參見本short demo