Отключение 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 атрибута нету.

http://jsfiddle.net/A3SL4/

<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
    });
}
Другие вопросы по тегам