2010-09-04 4 views
3
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); 

J'ai cette fonction que je veux exécuter onLoad, ainsi que onChange, en même temps. Actuellement seulement onChange fonctionne, mais onLoad, ces champs restent activés.OnLoad et OnChange (jQuery)

Merci pour votre aide!

Répondre

3

Vous ne savez pas exactement si c'est ce que vous recherchez, mais si vous espérez exécuter le code safe() lors du chargement de la page, essayez ceci.

Exemple: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"); 

}); 

Utilise .triggerHandler() pour tirer le gestionnaire sans changer l'état.

2

Je suppose que safe est la fonction failsafe à laquelle vous faites référence et c'est juste un mélange d'affichage. Au lieu de .is(':checked') vous pouvez simplement utiliser la propriété .checked DOM et de le rendre très court, comme ceci:

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

L'appel .change() à la fin déclenche le gestionnaire d'événements change vous venez lié, il fonctionne aussi sur la charge.