2011-05-05 6 views
0

다음에서는 filter ('input : text, textarea')를 사용하여 입력 필드를 읽기 전용으로 설정하고 있습니다 (불투명). 그러나이 선택기는 텍스트 입력이 아닌 텍스트 입력 만 선택합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?왜이 jquery 선택자는 텍스트 영역을 선택하지 않습니까?

<!DOCTYPE html> 
<html> 
    <head> 
    <title>setReadOnly() Test</title> 
    <link rel="stylesheet" type="text/css" href="../styles/core.css"> 
    <link rel="stylesheet" type="text/css" href="test.setReadOnly.css"> 
    <script type="text/javascript" src="../scripts/jquery-1.4.js"></script> 
    <script type="text/javascript" src="../scripts/jqia2.support.js"></script> 
    <script type="text/javascript"> 
     (function($){ 
      $.fn.setReadOnly = function(readonly) { 
      return this.filter('input:text,textarea') 
       .attr('readOnly',readonly) 
       .css('opacity', readonly ? 0.5 : 1.0) 
       .end(); 
      }; 
     })(jQuery); 
    </script> 
    <script type="text/javascript"> 
     $(function(){ 
     $('#sameAddressControl').click(function(){ 
      var same = this.checked; 
      $('#billAddress').val(same ? $('#shipAddress').val():''); 
      $('#billCity').val(same ? $('#shipCity').val():''); 
      $('#billState').val(same ? $('#shipState').val():''); 
      $('#billZip').val(same ? $('#shipZip').val():''); 
      $('#bill_random_field').val(same ? $('#ship_random_field').val():''); 
      $('#billingAddress input').setReadOnly(same); 
     }); 
     }); 
    </script> 
    </head> 

    <body> 

    <div data-module="Test setReadOnly()"> 

     <form name="testForm"> 
     <div> 
      <label>First name:</label> 
      <input type="text" name="firstName" id="firstName"/> 
     </div> 
     <div> 
      <label>Last name:</label> 
      <input type="text" name="lastName" id="lastName"/> 
     </div> 
     <div id="shippingAddress"> 
      <h2>Shipping address</h2> 
      <div> 
      <label>Street address:</label> 
      <input type="text" name="shipAddress" id="shipAddress"/> 
      </div> 
      <div> 
      <label>City, state, zip, random_field:</label> 
      <input type="text" name="shipCity" id="shipCity"/> 
      <input type="text" name="shipState" id="shipState"/> 
      <input type="text" name="shipZip" id="shipZip"/> 
      <textarea name="random_field" rows="2" cols="20" id="ship_random_field"></textarea> 
      </div> 
     </div> 
     <div id="billingAddress"> 
      <h2>Billing address</h2> 
      <div> 
      <input type="checkbox" id="sameAddressControl"/> 
      Billing address is same as shipping address 
      </div> 
      <div> 
      <label>Street address:</label> 
      <input type="text" name="billAddress" 
        id="billAddress"/> 
      </div> 
      <div> 
      <label>City, state, zip, random_field:</label> 
      <input type="text" name="billCity" id="billCity"/> 
      <input type="text" name="billState" id="billState"/> 
      <input type="text" name="billZip" id="billZip"/> 
      <textarea name="random_field" rows="2" cols="20" id="bill_random_field"></textarea> 
      </div> 
     </div> 
     </form> 
    </div> 

    </body> 
</html> 

답변

2

시도가 $('#billingAddress input,textarea').setReadOnly(same);

업데이트 사실

에 선 $('#billingAddress input').setReadOnly(same);을 변경하려면 있어야합니다 당신은 코멘트에 말했듯이 : $('#billingAddress input,#billingAddress textarea').

+0

흥미 롭다. 그게 효과가 없지만 그것을 $ ('# billingAddress input, # billingAddress textarea'). setReadOnly (same); 나는 당신의 제안이 왜 효과가 없었는지 의아해합니다. – jela

+0

콘텐츠가 아닌 요소 자체를 필터링하려고하므로 제안이 작동하지 않았습니다. 대신에'$ ('# billingAddress'). find ('*'). setReadOnly (same)'을 시도하거나 필터를'this.find ('*') .. '로 다시 작성하십시오. – Shagglez

+0

죄송합니다,'input, textarea'을 잊어 버렸습니다. – Tulio

관련 문제