2013-03-09 63 views
1

我正在使用內置的HTML5驗證方法來驗證表單中的出生日期。HTML5 setCustomValidation unbind issues

的形式有三種選擇列表中的元素, user_dob_date user_dob_month user_dob_year

所有這三個要素已經提爲「需要」進行驗證的用戶必須選擇一個有效的選項

現在,在用戶選擇所有三個選項並選擇至少一個選項的HTML5驗證通過罰款後,我想檢查閏年的日期,並確保用戶不會選擇類似於第31st 1998年二月!

$('#form-signup-next').submit(function(){      
    if($('#user_dob_month').val()=='2' && $('#user_dob_date').val()>29){ 
     var obj=$('#user_dob_date')[0]; 
     alert($('#user_dob_month').val()); 
     obj.setCustomValidity('Invalid Date!');   
    }else{ 
     var obj=$('#user_dob_date')[0]; 
     obj.setCustomValidity(''); 
    } 
    return false; 
    }); 

- >點擊提交時,自定義信息不會顯示。它會在按鈕被點擊兩次時執行。首先點擊它matbe設置味精,但沒有顯示,第二次單擊錯誤顯示

- >如果錯誤選擇並顯示自定義味精後,如果日期是固定的,我們嘗試提交表單,它仍然會拋出錯誤:(

請幫我在這。感謝提前:)

回答

1

你不應該做的是對提交表單的,因爲一旦setCustomValidity值設置它不會允許提交表單,直到除非驗證錯誤值已清除,並且在您的代碼中,問題在於您要在提交時清除錯誤值。所以這就是即使您在下次運行中更正了值也會得到驗證錯誤的原因。

詳情請所以現在檢查此鏈接CURRENT IMPLEMENTATION ISSUES AND LIMITATIONS(specially Problem 3)

OK,你可以在這個way..by檢查&設置在下拉值更改事件

$('#user_dob_date,#user_dob_month').on('change',function(){ 
    if($('#user_dob_month').val()=='2' && $('#user_dob_date').val()>29){ 
    $('#user_dob_date')[0].setCustomValidity('Invalid Date!'); 
    } 
    else{ 
    $('#user_dob_date')[0].setCustomValidity(''); 
    } 
    }); 

錯誤信息做到這一點我檢查了這個&它工作正常。

所以現在當用戶選擇錯誤的組合&按提交按鈕它會顯示錯誤信息。

嘗試此http://jsbin.com/aqicim/1

+0

由於一噸Peeyush !!!!這工作就像一個魅力:) – 2013-03-10 04:01:18