checkbox 之只选中一个时 ,不勾选问题

来源:互联网 发布:mac怎么下载单机游戏 编辑:程序博客网 时间:2024/06/10 16:35

在有些查询传值问题时需要勾选,有些人一直问为什么不用rediobutton,而用checkbox,这是为了解决,不选择时,传空,而查询时,rediobutton是必须选择一个的,我们需要传空值,而不要必须传默认值
1.html

<div style="margin-bottom: 20px;margin-top: 20px">  <form  action="" method="post">  <div class="input-append"> <label class="checkbox inline">  <input type="checkbox" value="1"> 按天    </label><label class="checkbox inline">  <input type="checkbox"  value="2">按月</label><label class="checkbox inline">  <input type="checkbox" value="3"> 按年</label>    <input type="text" class="span2 search-query" placeholder="商品名称">    <button type="submit" class="btn btn-info">搜索</button>  </div></form></div>

2.js

(":checkbox").click(function(){(":checkbox").removeAttr("checked");
(this).prop(checked,true);alert((this).val());
});

3.如果用attr(‘checked’,true) 时会出现没有勾选框的情况,这是因为
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了。
关于它们两个的区别,网上的答案很多,其实很简单:
对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
举个栗子:

栗子中,a元素的DOM属性有“href、id和action”,很明显,前两个是固有属性,而后面一个“action”属性是我们自己自定义上去的,a元素本身是没有这个属性的。这种就是自定义的DOM属性。处理这些属性时,建议使用attr方法。使用prop方法取值和设置属性值时,都会返回undefined值。

现在再说说我们之前那个栗子,也就是checkbox的问题。


像checkbox,radio和select这样的元素,选中属性对应“checked”和“selected”,这些也属于固有属性,因此需要使用prop方法去操作才能获得正确的结果。
而如果使用attr:

(“#test_check1”).attr(“checked”) == undefined(“#test_check2”).attr(“checked”) == “checked”

而如果使用prop,则正常:

(“#test_check1”).prop(“checked”) == false(“#test_check2”).prop(“checked”) == true

所以归根到底就是attr和prop的区别。

0 0
原创粉丝点击