2010-07-28 36 views
3

我正在爲網站編寫CMS的自定義代碼。當用戶點擊提交按鈕(使用jQuery UI創建)時,它會調用按鈕上的click事件,然後調用提交表單的提交事件。任何方式來覆蓋.blur()如果.submit()在jQuery中被調用?

說的形式還檢查特定字段,看看他們是否有文本,並會顯示錯誤消息,並停用提交按鈕,直到問題得到解決。爲此,我目前使用.focus(),它內部有一個.blur()函數,用於檢查錯誤是否被修復,如果是,則移除該通知(如果沒有其他錯誤,則重新激活該按鈕)。

現在,我遇到的問題是,如果用戶隨時編輯其中一個被檢查的字段,如果他們沒有點擊它並嘗試提交表單數據,則.blur()函數會接受控制(因爲它應該如何編碼),所以需要第二次點擊才能提交​​表單數據。

有沒有辦法讓.submit()在jQuery中優先於.blur(),所以這個問題不會發生(現在我可以簡單地告訴用戶使用它不要執行引起它的步驟) ?

(如果你們需要的代碼,我可以嘗試發佈它的某些位在這裏。)

+0

請不要包含的代碼,它不是從你的問題不清楚是什麼與您的模糊效果防止發生提交。 – 2010-07-28 10:42:50

+0

我有完全相同的問題 – jeje 2011-03-02 00:14:33

回答

0

在昨天晚上想了一會兒之後,我意識到如果我在快速調試blur()之前做了一個快速檢查以確定錯誤是否可見,它會解決我的問題(做了快速測試,似乎有問題)。

感謝有關事件傳播停止的建議,但我必須牢記這一點。

2

我嘗試刪除輸入字段上的模糊事件,並使用窗體驗證函數的onFocusout事件。該解決方案爲我工作。

其他最好的解決方案是設置計時器,在觸發按鈕單擊事件之前延遲模糊事件動作。

//命名空間定時器 VAR的SetTimer = { 定時器:空 }

 $('input,select').blur(function() { 
      setTimer.timer = setTimeout(function() { 
       functionCall(); 
      }, 1000); 
     }); 

     $('input,select').focus(function() { 
      setTimer.timer = setTimeout(function() { 
       functionCall(); 
      }, 1000); 
     }); 

     $("#btn").click(function() { 
      clearTimeout(setTimer.timer); 
      functionCall(); 
     }); 
相關問題