2009-07-21 59 views
0

我正在使用jQuery Form plugin做一個'阿賈克斯'提交我的表格,其中包括約4無線電選擇。但是,如果沒有選擇任何單選按鈕,我希望表單不提交。不要提交表單,如果沒有選擇,使用jQuery ajaxForm插件

這裏是我的嘗試,到目前爲止,通過這樣的代碼,我在另一個發現SO回答和插件文檔幫助:

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

我敢肯定,回調ischecked是越來越執行(alert()旨意火等),但代碼本身似乎沒有檢測到沒有單選按鈕被選中,並且表單繼續被提交。

這裏的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> 

回答

2

所有jQuery方法返回一個數組,如果它不能找到匹配,它會返回一個空數組。如果你用'if'檢查'空'數組,它將返回true。

嘗試

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'). 

} 

編輯:更新的代碼後作者發佈HTML。

+0

當我這樣做警報($(「#回答:檢查」)長度)。它總是0,即使我有選擇的單選框中的一個。 – Ian 2009-07-21 23:16:05

2

試試這個:

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