2010-04-25 5 views
0

J'ai le suivant/sinon sur un autre formulaire et cela fonctionne parfaitement. Je l'ai maintenant mis sur un formulaire qui montre comme un dialogue jquery. Chaque alerte présente l'affectation correcte, mais lorsque la boîte de dialogue s'ouvre, aucun bouton n'est sélectionné.Définir le bouton radio dans la boîte de dialogue jquery

 $("#create-company").click(function() { 
      alert($('#primary_company').val().length); 
      if ($('#primary_company').val().length > 0) { 
       alert("if secondary"); 
       $('#secondary').attr('checked', 'true'); 
       var id = $("input:radio[name='companyType']:checked").attr('id'); 
       alert(id); 
      } 
      else { 
       alert("else primary"); 
       $('#primary').attr('checked', 'true'); 
       $('#sec').hide(); 
       var id = $("input:radio[name='companyType']:checked").attr('id'); 
       alert(id); 
      } 
      var id = $("input:radio[name='companyType']:checked").attr('id'); 
      alert(id); 
      $('#popupCreateCompany').dialog('open'); 
     }); 

Dialog:

 $('#popupCreateCompany').dialog(
     { 
      autoOpen: false, 
      modal: true, 
      buttons: 
      { 
       'Add': function() { 
        var dialog = $(this); 
        var form = dialog.find('input:text, select'); 
        $.post('/company/post', $(form).serialize(), function(data) { 
         if (data.Result == "success") { 
          var id = $("input:radio[name='companyType']:checked").attr('id'); 
          if (id == "primary") { 
           $('#company').append($('<option></option>').val(data.company_id).html(data.company_name).attr("selected", true)); 
           $('#primary_company').append($('<option></option>').val(data.company_id).html(data.company_name).attr("selected", true)); 
           $('#company_id').append($('<option></option>').val(data.company_id).html(data.company_name).attr("selected", true)); 
          } 
          else { 
           $('#company_id').append($('<option></option>').val(data.company_id).html(data.company_name)); 
          } 
          dialog.dialog('close'); 
          alert("Company " + data.company_name + " successfully added."); 

         } 
         else { 
          alert(data.Result); 
         }; 
        }, "json") 
       }, 
       'Cancel': function() { 
        $(this).dialog('close'); 
       } 
      } 
     }); 

boutons radio:

<label>Company Type:</label> 
     <label for="primary"><input onclick="javascript: $('#sec').hide('slow');$('#primary_company').find('option:first').attr('selected','selected');" type="radio" name="companyType" id="primary" />Primary</label> 
     <label for="secondary"><input onclick="javascript: $('#sec').show('slow');" type="radio" name="companyType" id="secondary" />Subsidiary</label> 
     <div id="sec"> 
      <fieldset> 
      <label for="primary_company">Primary Company:</label> 
      <%= Html.DropDownList("primary_company", Model.SelectPrimaryCompanies, "** Select Primary Company **") %> 
      </fieldset> 
     </div> 
+0

Utilisez Firebug, déboguer votre script, vérifie ce que les sélecteurs de retour, ont-ils mis en état vérifiés, etc. – queen3

Répondre

1

Le DOM a changé le chargement de la boîte de dialogue si vous avez besoin d'utiliser une méthode de rappel pour réinitialiser vos valeurs de formulaire .

Essayez les « ouverts » ou événements de rappel « focus » de la boîte de dialogue:

$('#popupCreateCompany').dialog({ 
     open: function(event, ui) { ... } 
}); 
+0

Merci! Je ne savais pas à propos de l'événement ouvert. – RememberME