2010-07-13 25 views
2

可能是一個簡單的解決方案,所以我有點尷尬,但JS是不是真的我的專長,所以我想我會問。jQuery的阿賈克斯驗證複選框

我使用Jquery Form插件提交一組複選框中用於爲活動策劃應用程序我提出的要求。我無法讓我的驗證presubmit回調

拒絕的形式,如果有對「要求」沒有數組的關鍵。我知道在PHP中,我可以簡單地使用類似array_key_exists的東西或只是檢查isset(),但我不知道什麼是js中的同源。代碼如下。

<form id="choose_reqs" method="post" action="http://www.domain.com/generator/chooseReqs/" enctype="multipart/form-data"> 
      <p>I'm planning on getting:</p> 
      <?php foreach($_SESSION['event']->opt_r as $r){?> 
       <span style="display:block; width:120px; padding:4px; border:1px #ccc solid;"><input type="checkbox" value="<?=$r;?>" name="requirement[]"/><?=$r;?></span> 
      <?php }?> 
      <input type="submit" name="event_chosen" value="Next" /> 
     </form> 

然後表單後運行相關的js中加載:

function eventTypeChosen(responseText, statusText, xhr, $form) { 

    var options = { 
     target:  '#app', 
     beforeSubmit: formSubmitCheck, 
     success:  reqsChosen 
    }; 
     setNav(); 
     $('#choose_reqs').ajaxForm(options); 
    } 

    function setNav(){ 
     $('#start_over').click(start); 
    } 


    function formSubmitCheck(formData, jqForm, options){ 

     if(formData.hasOwnProperty('requirement')){ 
      alert('Please check at least one requirement'); 
      return false; 
     }else{ 

    $(jqForm).fadeOut(200); 
    return true; 
    } 
    } 

顯然事情是錯誤的.hasOwnProperty()方法,以及如何我使用它。

+0

我可能會在這裏丟失一些明顯的東西,但你在哪裏定義'formData'對象?除非你(或者你正在使用的插件)正在做類似'var formData = {require:'something'};'我看不到這會怎麼樣? – HurnsMobile 2010-07-13 15:48:15

+0

插件本身處理定義formData對象和其他參數。格式在這裏描述http://jquery.malsup.com/form/#validation - 但在這個例子中他們使用文本輸入,所以鍵被定義,他們可以檢查是否值爲空。我的複選框,所以如果沒有檢查(這是我試圖拒絕)沒有關鍵要求目前,所以我需要檢查。 – DeaconDesperado 2010-07-13 15:57:22

回答

2
function formSubmitCheck(formData, jqForm, options){ 

     if($('input[name=requirement[]]').fieldValue().length==0){ 
      alert('Please check at least one requirement'); 
      return false; 
     }else{ 

    $(jqForm).fadeOut(200); 
    return true; 
    } 
    } 
+0

謝謝davyM - 工作很棒! – DeaconDesperado 2010-07-13 16:53:25

+0

不客氣! – 2010-07-13 16:56:24

1

從您在評論鏈接的形式插件頁:

FORMDATA是代表名稱,將被髮送到服務器的每個字段的值對象的數組...

嘗試將formData對象輸出到控制檯,以便驗證其結構。

+0

這確實發生在我身上......當傾出數組時,每個表單輸入都是一個帶有數字數組鍵的多維數組,其下是'name'和'value'的鍵。我的問題是,我看不到如何鑽取數字鍵到名稱鍵子,並只檢查是否存在整個數組(因爲提交鍵不重要)。我曾想過循環它們並指示它忽略名稱提交的元素,但這似乎也不起作用。 – DeaconDesperado 2010-07-13 16:46:18