2010-10-06 135 views
1

我有我使用jQuery /郵件黑猩猩的形式。Jquery表單驗證 - 使用if語句進行驗證?

形式的一部分是隱藏的,示出了(使用jquery幻燈片())如果無線電按鈕被選中。

每一件事情的偉大工程,因爲它應該。

問題:

的形式設置,以驗證被隱藏,以及各節。但是,有些用戶不會經常檢查單選按鈕,這意味着表單將蹣跚,因爲隱藏窗體不會驗證,因爲他們沒有填寫。

是否任何機構對此有任何變通?

這是代碼。

觸發(示出的形式的其餘部分。)

<div id="accordionup"> 
    <li> 
     <input name="group[5]" type="radio" id="mce-group-5-1"   value="32"checked="checked" /> 
     <label for="mce-group-5-1">No 
    </li> 
</div> 

當用戶選擇單選按鈕下方滑動的形式向下。所有我需要做的就是添加class="required"一對夫婦沒有(這是關鍵太),其向下滑動的所有字段。所以基本上是某種有條件/如果陳述。

<div id="accordion"> 
        <div class="mc-address-group"> 
           <li class="statefield"> 
            <label for="mce-MMERGE1-state">State:</label> 
            <input type="text" value="" maxlength="20" name="MMERGE1[state]" id="mce-MMERGE1-state" class="" /> 
           </li> 
           <li class="zipfield"> 
            <label for="mce-MMERGE1-zip">Zip Code:</label> 
            <input type="text" value="" maxlength="10" name="MMERGE1[zip]" id="mce-MMERGE1-zip" class="" /> 
           </li> 
           <li class="countryfield"> 
</div> 

我用這對滑下

<script> 
$('#accordion').click(function() { 
    $('#slider').slideDown('slow', function() { 

    }); 
}); 

$('#accordionup').click(function() { 
    $('#slider').slideUp('slow', function() { 

    }); 
}); 

</script> 

謝謝。

+0

發佈的HTML和jQuery您至今將有很大的幫助。 – 2010-10-06 20:00:02

回答

5

試試這個:

$("#mce-group-5-1").change(function() { 
    $("#mce-MMERGE1-state").toggleClass('required'); 
}); 

您可以選擇用逗號分隔添加多個ID。 .toggleClass()將檢查所選元素是否具有指定的類。如果有,它會刪除它,如果沒有,它會添加它。

看來你正在使用jQuery驗證插件,所以作爲替代,你可以在飛行中與.rules()這樣的添加和移除規則:

$("#mce-group-5-1").change(function() { 
    if ($(this).is(":checked")) { 
     $("#mce-MMERGE1-state").rules("add", "required"); 
    } else { 
     $("#mce-MMERGE1-state").rules("remove"); // remove all validation rules 
    } 
}); 

查看的jsfiddle一個complete demo(用途複選框而不是單選按鈕)。

希望這會有所幫助。

+0

FreekOne,真的很感謝你花時間,我正在嘗試切換功能,但它似乎不適合我。 <腳本類型= 「文本/ JavaScript的」> \t $(函數(){ \t \t $( 「#手風琴」)。單擊(函數(){ \t \t \t $( '#MCE-MMERGE1-ADDR1' )。toggleClass( '必要'); \t \t \t return false; \t \t}); \t}); \t – Driftwood 2010-10-06 22:08:35

+0

我不確定你是如何使用它,但在這[JSFiddle Demo](http://jsfiddle.net/8QQHP/)它工作得很好。請注意我在所有隱藏字段的ID上使用的'req_'前綴,這些ID在可見時應該是必需的。我做到了,所以編寫選擇器會更簡單。 – 2010-10-06 22:56:41

+0

我認爲「input [id^= req_]」這個部分讓我感到困惑。你說得對,它很棒。另一件我嘗試過的工作也是使用該部分的形式,並使用加載函數添加,在..它不是elegent,但它的工作原理:(仍然在這個新的。感謝一大堆花時間 – Driftwood 2010-10-07 15:13:19