天天看點

asp.net webform中submit按鈕使用不當很容易犯的一個錯誤

webform中預設一個頁面隻能有一個form,有時submit按鈕使用不當會産生一些奇怪的問題。

asp.net webform中submit按鈕使用不當很容易犯的一個錯誤

比如這是一個網站的頭部搜尋部分,前端人員把“搜尋”按鈕用<input type="submit" />處理,然後在js中文本框裡按下Enter鍵時,自動調用doSearch()函數,該函數可能類似下面這樣:(隻是表達一下大概的意思)

function doSearch(){

  window.location="search.aspx?w=abc";

  return false; 

}

“搜尋”按鈕的click事件中,用類似 onClick="doSearch()"來處理,本來這樣處理也沒什麼不對,不管是在文本框中按下回車,還是點選“搜尋”按鈕都是ok的。但是如果遇到下面的情況,且二部分功能是不同的程式員來寫時,就可能出問題:

asp.net webform中submit按鈕使用不當很容易犯的一個錯誤

另一個前端開發人員把“登入子產品”加進來以後(注:“登入”按鈕用的是服務端Button控件,即最終在html中也是submit按鈕,單獨點選“登入”按鈕時,一切正常),但是在一個form中,在任何一個文本框上按下Enter鍵時,相當于預設點選了第一個submit按鈕(即送出表單),這樣在登入過程中,當使用者輸入完郵箱、密碼、驗證碼,按下Enter鍵的時候,實際上會觸發“搜尋”按鈕的click行為,而搜尋按鈕在上面的進行中,調用的是doSearch()方法,最終頁面會引導到搜尋頁上,并未按原來的意圖送出,導緻登入不了。

“各自單獨的子產品”獨立測試時都是正常的,但是整合在一起就容易出問題了,是以說這種錯誤容易犯,我的建議是對于webform中的開發,不是必須要submit的場景,盡量避免用submit按鈕。

繼續閱讀