OnLoad и OnChange (jQuery) - PullRequest
       21

OnLoad и OnChange (jQuery)

3 голосов
/ 04 сентября 2010
function safe(){
    if($(this).is(':checked')){
        $("select[name='sort']").attr("disabled", "disabled");
        $("input[name='group']").attr("disabled", "disabled")
    } else {
        $("select[name='sort']").attr("disabled", false);
        $("input[name='group']").attr("disabled", false)
    }
}
$('input#safe').change(failsafe);

У меня есть эта функция, которую я хочу запустить одновременно с onLoad и onChange. В настоящее время работает только onChange, но onLoad, эти поля остаются включенными.

Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 04 сентября 2010

Не совсем уверен, что это то, что вы ищете, но если вы надеялись запустить код safe() при загрузке страницы, попробуйте это.

Пример: http://jsfiddle.net/ewNEc/

$(function() {

    function safe(){
        if( this.checked ){
            $("select[name='sort']").attr("disabled", "disabled");
            $("input[name='group']").attr("disabled", "disabled")
        } else {
            $("select[name='sort']").attr("disabled", false);
            $("input[name='group']").attr("disabled", false)
        }
    }
    $('input#safe').change(safe).triggerHandler("change");

});

Использует .triggerHandler() для запуска обработчика без изменения состояния.

2 голосов
/ 04 сентября 2010

Я предполагаю, что здесь safe - это функция failsafe, на которую вы ссылаетесь, и это просто путаница. Вместо .is(':checked') вы можете просто использовать свойство .checked DOM и сделать его очень коротким, например:

$(function() {
  $('input#safe').change(function() {
    $("select[name='sort'], input[name='group']").attr("disabled", this.checked);
  }).change();
});

Вызов .change() в конце вызывает обработчик события change, который вы только что связали, поэтому он также запускается при загрузке.

...