2009-07-21 8 views
0

Ich verwende die jQuery Form plugin, um eine 'Ajax' von meinem Formular zu tun, die aus etwa 4 Radio wählt besteht. Ich möchte jedoch, dass das Formular nicht gesendet wird, wenn keiner der Optionsfelder ausgewählt wurde.Formular nicht senden, wenn nichts ausgewählt, mit jQuery AjaxForm Plugin

Hier ist mein Versuch, so weit, half ich von so Code habe in einem anderen SO beantworten und der Plugin-Dokumentation gefunden:

$(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; 
    } 
} 

Ich bin sicher, dass der Rückruf ischecked ausgeführt zu werden (alert() s wird Feuer usw.), aber der Code selbst scheint nicht zu erkennen, dass keine Optionsfelder ausgewählt sind, und das Formular wird weiterhin gesendet.

Hier ist das HTML-Formular:

<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> 

Antwort

2

Alle jQuery Methoden ein Array, wenn es keine Übereinstimmung gefunden wird, wird es ein leeres Array zurück. Wenn Sie ein 'leeres' Array mit 'if' überprüfen, wird True zurückgegeben.

Versuchen

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: Aktualisiert den Code nach Autor HTML geschrieben.

+0

wenn ich alert tun ($ ('# Antwort: checked') Länge.) Es ist immer 0, auch wenn ich eine der Checkboxen ausgewählt. – Ian

+0

Können Sie Ihren HTML-Code posten? – SolutionYogi

+0

Wenn Ihre Optionsfelder mit dem Namen 'myGroup' gruppiert sind, versuchen Sie $ ('input [name = "myGroup"]: überprüft'). Länge – SolutionYogi

2

Versuchen Sie folgendes:

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