Отключение JQuery UI с помощью checbox
Я использую: http://api.jqueryui.com/spinner как я могу установить его так, чтобы, если вход отключен attr=, он отключил счетчик?
<input type="checkbox" />
<input type="text" class="spinner" />
if($checkbox.attr("checked")){
$input.removeAttr('disabled').spinner();
} else {
$input.attr('disabled', true).spinner("option", "disabled", true);
}
Этот код дает мне ошибку: не может вызвать методы на счетчике до инициализации; попытался вызвать метод 'option'
3 ответа
Попробуйте это: http://jsbin.com/ojiwas/1/edit
$( ".spinner" ).prop('disabled',true);
$(':checkbox').change(function(){
if($(':checked').length>0){
$( ".spinner" ).spinner();
}else{
$( ".spinner" ).spinner("destroy").prop('disabled',true);
}
});
Спиннер пользовательского интерфейса jQuery по умолчанию имеет методы включения/ отключения, которые лучше всего использовать. Кроме того, если вы хотите по умолчанию отключить счетчик, просто установите его вход в disabled="disabled"
затем кормить this.disabled
конструктору блесны. Кормить безопасно this.disabled
к конструктору счетчика каждый раз, если вы используете этот подход, потому что this.disabled
=== true
если disabled="disabled"
а также this.disabled
=== false
если disabled
атрибута нету.
<html>
<head>
<link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"/>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
</head>
<body>
<p>
<label for="spinner1">Default Enabled Spinner</label>
<input class="spinner" id="spinner1"/>
<input checked="checked" onchange="enableSpinner('spinner1', this.checked);" type="checkbox"/>
</p>
<p>
<label for="spinner2">Default Disabled Spinner</label>
<input class="spinner" disabled="disabled" id="spinner2"/>
<input onchange="enableSpinner('spinner2', this.checked);" type="checkbox"/>
</p>
<script type="text/javascript">
$(".spinner").each(function() {
$(this).spinner({
disabled: this.disabled
});
});
function enableSpinner(spinnerId, enable) {
var spinner = $("#" + spinnerId);
if (enable) {
spinner.spinner("enable");
} else {
spinner.spinner("disable");
}
}
</script>
</body>
</html>
Вы пытаетесь установить опцию своего виджета счетчика, когда он не создан. Вместо этого вы можете вызвать спиннер с помощью опции конструктора disable
:
if($checkbox.attr("checked")){
$input.removeAttr('disabled').spinner();
} else {
$input.attr('disabled', true).spinner({
disabled: true
});
}