2013-06-20 27 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