2009-07-21 10 views
0

J'utilise le jQuery Form plugin pour faire un ajax 'soumettre de mon formulaire, qui se compose d'environ 4 sélections radio. Cependant, je souhaite que le formulaire ne soit pas envoyé si aucun des boutons radio n'a été sélectionné.Ne pas soumettre de formulaire si rien n'est sélectionné, en utilisant jQuery ajaxForm plugin

Voilà ma tentative à ce jour, aidé par le code si je l'ai trouvé dans un autre SO répondre et le plugin docs:

$(document).ready(function() { 

    var options = { target: '#response', 
        type: 'get', 
        beforeSubmit: ischecked 
        } 

    $('#answer').ajaxForm(options); 

}); 


function ischecked(formData, jqForm, options){ 


    if ($('input:radio', $('#answer').is(':checked'))) 
    { 
      return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

Je suis sûr que le rappel ischecked est CHAISE (s alert() se déclencheront , etc), mais le code lui-même ne semble pas détecter qu'aucun bouton radio n'est sélectionné et le formulaire continue à être soumis.

Voici le formulaire HTML:

<form action="score.php" id="answer"> 
    <div style="margin-top: 0pt;" class="ans"> 
     <input type="hidden" value="127" name="question_id"/> 
     <input type="hidden" value="f5043d5122cec6eb981c9a2fc7a0a653" name="user_id"/> 
     <input type="hidden" value="36" name="question_key"/> 
     <input type="hidden" value="37" name="next_key"/> 

     <ul id="answers"> 
      <li> 
       <label> 
        <input type="radio" value="464" name="answer_id"/> mod_rewrite       </label> 
      </li> 
      <li> 
       <label> 
        <input type="radio" value="465" name="answer_id"/> XML Site Map       </label> 
      </li> 
      <li> 
       <label> 
        <input type="radio" value="466" name="answer_id"/> Tiny URL       </label> 
      </li> 
      <li> 
       <label> 
        <input type="radio" value="467" name="answer_id"/> both a) and b)       </label> 
      </li> 
      <li> 
       <label> 
        <input type="radio" value="468" name="answer_id"/> a), b) and c) can all be used to make it easier for Google to index your dynamically generated URLs.       </label> 
      </li> 
          </ul> 
    </div> 
    <input type="submit" value="Submit Answer and Get Result" id="answer_submission"/> 
</form> 

Répondre

2

Toutes les méthodes jQuery renvoient un tableau, si elle ne peut pas trouver un match, il retournera un tableau vide. Si vous vérifiez un tableau 'vide' avec 'if', il retournera vrai.

Essayez

function ischecked(formData, jqForm, options) 
{ 
    return $('input[name="answer_id"]:checked').length > 0; //Checking that the number of checked items are more than zero. 

    //You should also be able to use $('#answers input:checked'). 

} 

EDIT: Mise à jour le code après l'auteur a publié HTML.

+0

quand je fais alert ($ ('# réponse: checked') de longueur.) Il est toujours 0, même si j'ai l'une des boîtes de radio sélectionnées. – Ian

+0

Pourriez-vous publier votre HTML? – SolutionYogi

+0

Si vos boutons radio sont groupés en utilisant le nom "myGroup", essayez $ ('input [name = "myGroup"]: coché'). Length – SolutionYogi

2

Essayez ceci:

function ischecked(formData, jqForm, options) 
{ 
    return $('input[name=answer]').is('checked'); 
} 
Questions connexes