Checkbox must not be all the way hidden for change to fire in IE. Switched out .hide() for ui-helper-hidden-accessible class instead. Fixes #5261 - button change events don't fire in IE 7/8

This commit is contained in:
Richard Worth 2010-03-11 02:09:45 +00:00
parent ac138fcb25
commit cef16fdf78
2 changed files with 42 additions and 1 deletions

View File

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Button Visual Test : Button ticket #5261</title>
<link rel="stylesheet" href="../visual.css" type="text/css" />
<link rel="stylesheet" href="../../../themes/base/jquery.ui.all.css" type="text/css">
<script type="text/javascript" src="../../../jquery-1.4.2.js"></script>
<script type="text/javascript" src="../../../ui/jquery.ui.core.js"></script>
<script type="text/javascript" src="../../../ui/jquery.ui.widget.js"></script>
<script type="text/javascript" src="../../../ui/jquery.ui.button.js"></script>
<script type="text/javascript">
$(function() {
$('#id1').button().change(function(e) {
console.log('change', e);
});
$('#id1').bind('change', function(e) {
console.log('bound change', e);
});
$("body").live('change', function(e) {
console.log('live change on body', e);
});
$(document).delegate('input', 'change', function(e) {
console.log('delegated input change', e);
});
$(document).change(function(e) {
console.log('delegated change on document', e);
});
});
</script>
</head>
<body>
<h1 class="ui-widget-header"><a href="http://dev.jqueryui.com/ticket/5261">#5261 - button change events don't fire in IE 7/8</a></h1>
<input name="1" id="id1" type="checkbox"/>
<label for="id1">Checkbox</label>
</body>
</html>

View File

@ -159,7 +159,7 @@ $.widget( "ui.button", {
if ( this.type === "checkbox" || this.type === "radio" ) {
this.buttonElement = $( "[for=" + this.element.attr("id") + "]" );
this.element.hide();
this.element.addClass('ui-helper-hidden-accessible');
var checked = this.element.is( ":checked" );
if ( checked ) {