Bootstrap框架中radio設置值


Bootstrap中的radio設置值不能像我們平常給普通radio賦值那樣,因為無效。
我們用Bootstrap框架里的radio組件,代碼:

 <div class="radio-list">
         <label>
              <input type="radio" value="1" name="gender" data-title="男"/> 男
         </label>
         <label>
              <input type="radio" value="2" name="gender" data-title="女"/> 女
         </label>
</div>

最后Bootstrap給我們生成的代碼:

<div class="radio-list">

         <label>
            <div class="radio">
                <span class="checked">
                    <input type="radio" value="1" name="gender" data-title="男" >  
                </span>
            </div> 男
          </label>

          <label>
               <div class="radio"><span><input type="radio" value="2" name="gender" data-title="女"></span></div> 女
         </label>
 </div>

Bootstrap做了什么?

簡短一下,其實是:
<input type="radio" value="1" name="gender" data-title="男"/> 男 這句變成了
<div class="radio"><span><input type="radio" value="1" name="gender" data-title="男"></span></div> 男
其實是在radio外加了一個,然后再加一個class="radio" 的

如果是選中下的input代碼是啥樣?

<div class="radio"><span class="checked"><input type="radio" value="1" name="gender" data-title="男"></span></div> 男

選中的不是直接在input上加checked屬性,而是在input的父元素span的class上加的,根據這種規則,我們在父元素上加個checked的class。
於是設置input被選中:$(':radio[name=gender][value='1']').parent().addClass('checked');
咦 發現果然radio被選中了,但是!!!當我設置了input必選的情況下,發現通不過驗證,意味着其實沒那么簡單。

然后我就按照常規 給radio賦值:$(':radio[name=gender][value='1']').parent().addClass('checked').attr("checked",true)
發現問題依舊存在,最后針對attr設置無效,一搜 發現應該用prop(),好吧,是我無知了。

最后設置:$(':radio[name=gender][value='1']').parent().addClass('checked').prop("checked",true),確實可以

radio取值就是普通的取值方式:

var sex = $(':radio[name=gender]:checked').val();

Jquery的attr()和prop()的區別,還是建議看一下。總的來說設置 checked、selected、disabled這類的,在jq的1.6+版本的一律用prop()設置比較好,其它用attr()。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM