Skip to content

Commit 2bb9417

Browse files
Martin Koujohnbender
Martin Kou
authored andcommitted
Fixed checkboxradio disable issue.
1 parent 2abdbf3 commit 2bb9417

File tree

3 files changed

+93
-0
lines changed

3 files changed

+93
-0
lines changed

js/jquery.mobile.forms.checkboxradio.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ $.widget( "mobile.checkboxradio", $.mobile.widget, {
5555
},
5656

5757
"touchend mouseup": function( event ){
58+
if ( input.is( ":disabled" ) )
59+
{
60+
event.preventDefault();
61+
return;
62+
}
5863
label.removeData("movestart");
5964
if( label.data("etype") && label.data("etype") !== event.type || label.data("moved") ){
6065
label.removeData("etype").removeData("moved");
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* mobile page unit tests
3+
*/
4+
module('jquery.mobile.forms.checkboxradio.js');
5+
6+
test( "widget can be disabled and enabled", function(){
7+
var input = $("#checkbox-1");
8+
var button = input.parent().find(".ui-btn");
9+
10+
input.checkboxradio("disable");
11+
input.checkboxradio("enable");
12+
ok(!input.attr("disabled"), "start input as enabled");
13+
ok(!input.parent().hasClass("ui-disabled"), "no disabled styles");
14+
ok(!input.attr("checked"), "not checked before click");
15+
button.trigger("mouseup");
16+
ok(input.attr("checked"), "checked after click");
17+
ok(button.hasClass("ui-btn-active"), "active styles after click");
18+
button.trigger("mouseup");
19+
20+
input.checkboxradio("disable");
21+
ok(input.attr("disabled"), "input disabled");
22+
ok(input.parent().hasClass("ui-disabled"), "disabled styles");
23+
ok(!input.attr("checked"), "not checked before click");
24+
button.trigger("mouseup");
25+
ok(!input.attr("checked"), "not checked after click");
26+
ok(!button.hasClass("ui-btn-active"), "no active styles after click");
27+
});

tests/unit/checkboxradio/index.html

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<title>jQuery Mobile Page Test Suite</title>
6+
7+
<script type="text/javascript" src="../../../js/jquery.js"></script>
8+
<script type="text/javascript" src="../../../js/jquery.ui.widget.js"></script>
9+
<script type="text/javascript" src="../../../js/jquery.mobile.widget.js"></script>
10+
<script type="text/javascript" src="../../../js/jquery.mobile.media.js"></script>
11+
<script type="text/javascript" src="../../../js/jquery.mobile.support.js"></script>
12+
<script type="text/javascript" src="../../../js/jquery.mobile.event.js"></script>
13+
<script type="text/javascript" src="../../../js/jquery.mobile.hashchange.js"></script>
14+
<script type="text/javascript" src="../../../js/jquery.mobile.core.js"></script>
15+
<script type="text/javascript" src="../../../js/jquery.mobile.navigation.js"></script>
16+
<script type="text/javascript" src="../../../js/jquery.mobile.page.js"></script>
17+
<script type="text/javascript" src="../../../js/jquery.mobile.fixHeaderFooter.js"></script>
18+
<script type="text/javascript" src="../../../js/jquery.mobile.forms.checkboxradio.js"></script>
19+
<script type="text/javascript" src="../../../js/jquery.mobile.forms.textinput.js"></script>
20+
<script type="text/javascript" src="../../../js/jquery.mobile.forms.select.js"></script>
21+
<script type="text/javascript" src="../../../js/jquery.mobile.buttonMarkup.js"></script>
22+
<script type="text/javascript" src="../../../js/jquery.mobile.forms.button.js"></script>
23+
<script type="text/javascript" src="../../../js/jquery.mobile.forms.slider.js"></script>
24+
<script type="text/javascript" src="../../../js/jquery.mobile.collapsible.js"></script>
25+
<script type="text/javascript" src="../../../js/jquery.mobile.controlGroup.js"></script>
26+
<script type="text/javascript" src="../../../js/jquery.mobile.fieldContain.js"></script>
27+
<script type="text/javascript" src="../../../js/jquery.mobile.listview.js"></script>
28+
<script type="text/javascript" src="../../../js/jquery.mobile.listview.filter.js"></script>
29+
<script type="text/javascript" src="../../../js/jquery.mobile.dialog.js"></script>
30+
<script type="text/javascript" src="../../../js/jquery.mobile.navbar.js"></script>
31+
<script type="text/javascript" src="../../../js/jquery.mobile.grid.js"></script>
32+
<script type="text/javascript" src="../../../tests/jquery.testHelper.js"></script>
33+
34+
35+
<link rel="stylesheet" href="../../../external/qunit.css" type="text/css"/>
36+
<script type="text/javascript" src="../../../external/qunit.js"></script>
37+
38+
<script type="text/javascript" src="checkboxradio_core.js"></script>
39+
</head>
40+
<body>
41+
42+
<h1 id="qunit-header">jQuery Mobile Page Test Suite</h1>
43+
<h2 id="qunit-banner"></h2>
44+
<h2 id="qunit-userAgent"></h2>
45+
<ol id="qunit-tests">
46+
</ol>
47+
48+
<div id="qunit-fixture">
49+
<div data-role="page">
50+
<div data-role="content">
51+
<div data-role="fieldcontain">
52+
<fieldset data-role="controlgroup">
53+
<legend>Agree to the terms:</legend>
54+
<input type="checkbox" name="checkbox-1" id="checkbox-1" class="custom" />
55+
<label for="checkbox-1">I agree</label>
56+
</fieldset>
57+
</div>
58+
</div>
59+
</div>
60+
</body>
61+
</html>

0 commit comments

Comments
 (0)