2012-04-18 51 views
1

我有一個窗體,在下拉選項列表中具有選擇輸入和一些選項。跳過使用javascript選擇輸入的通常行爲

要求:點擊選擇輸入我需要檢查窗體驗證。如果窗體不完整,我需要跳過選擇輸入的行爲,即不顯示選項列表。 但是,如果表格完整,選擇輸入應該顯示選項(即正常行爲)。

問題:我嘗試過使用event.preventDefault()來跳過進一步的操作,假設如果表單不完整,選擇輸入將不會顯示選項。 但這AINT幹活

查找代碼:

$('selectInput').addEvent('click', function(event){ 
    if(!validateForm()){ 
    if(event.preventDefault){ 
     event.preventDefault(); 
    } else { 
     //IE 
     event.returnValue = false; 
    } 
    } 
}); 
+0

你嘗試'返回false;'?這通常可以防止submot按鈕的默認行爲,它可能適用於select ... – jadkik94 2012-04-18 10:45:11

+0

yups我試過了......問題是在執行代碼之前,顯示了選項列表。所以我在想的是我們應該手動關閉選項列表。如何實現是我面臨的 – Zohaib 2012-04-18 10:54:35

+0

這個問題的障礙→http://stackoverflow.com/questions/15141398/cannot-preventdefault-via-firefox-on-a-select/33566917#33566917 – 2015-11-06 12:38:00

回答

2

您可以每次驗證參數更改時禁用/啓用選擇?

否則,我注意到您在使用jQuery,所以你可以imple,耳鼻喉科自己或已與您的功能所做的一個...

+0

哦,是的,'禁用啓用'的邏輯是我的備份選項。如果我錯過了,請你們讓我們得到更好的最佳想法。 – Zohaib 2012-04-18 12:42:25

+0

@Zohaib我猜即使你已經找到了你的確切問題的答案,它將在很大程度上依賴於不同的瀏覽器。如果您確實需要此功能,請將禁用的字段的樣式更改爲啓用的樣式或使用jquery自定義控件 – jadkik94 2012-04-18 13:43:52

1

我的建議是添加在你的onclick的選項。如果驗證通過,請添加選項,否則不要執行任何操作。

+0

yups I甚至認爲。但是,這甚至會使得如果最初有效的表單再次清除那些選項列表,然後在更新用戶的相同表單時(留下一些字段不完整)使表單再次失效。 – Zohaib 2012-04-18 11:08:05

+0

如果你沒有很多待驗證的字段,你可以添加一個驗證函數給他們,以確保表單是否有效,選項被刪除。只要形成我的頭腦,我理解它不是最優化的方法。 – 2012-04-19 01:29:40