2010-09-05 5 views
2
$(function() { 
    function f1() { 
     if (this.checked) { 
      $('select[name=two]').removeAttr('disabled'); 
     } else { 
      $('select[name=two]').attr('disabled', true); 
     } 
    } 
    $('input[name=one]').change(f1).triggerHandler('change'); 
    $('.reset').click(function() { 
     $('input[name=one]').removeAttr('checked').end().click(f1); 
    }) 
}); 

... fonctionne presque. Veuillez vérifier le violon here.La réinitialisation de formulaire provoque des problèmes (jQuery)

Mais le problème est:

  1. Check 'un' et sélectionnez 'deux' dans la liste déroulante.
  2. Cliquez sur 'réinitialiser'.
  3. Cochez à nouveau 'un' et essayez de sélectionner 'deux' dans la liste déroulante.

Dropdown est désactivé automatiquement!

Un grand merci pour votre aide!

+0

Pas une réponse directe, mais cela semble un peu trop complexe pour ce que vous faites, esp. si la forme se développe dans le futur. Peut-être stocker l'init. état avec 'clone()' serait mieux: http://jsfiddle.net/6HGsP/ –

Répondre

2

Vous devriez plutôt déclencher le gestionnaire de changement pendant la réinitialisation. Remplacer

$('input[name=one]').removeAttr('checked').end().click(f1); 

par

$('input[name=one]').removeAttr('checked').triggerHandler('change'); 

Here's a new fork.

+0

PARFAIT. Merci! :) – 3zzy

+0

De rien. – BalusC

Questions connexes