小問題 小技巧:敲回車默認提交

         最近做一個簡單的登錄界面,發現一個小問題,貼出來和大家分享一下。如果大家看着不值一提,請大家拍磚。

        平時可能太大意,有些小問題居然都沒有發現。我做一個不同的管理員進行管理時,有個dorpdownlist進行選擇,就無法進行使用回車鍵進行登錄;如圖: 平時進行登錄總是沒有遇到這樣情況,以爲敲回車登錄是一件很“天經地義”的事,可是這次我總是查了很多原因就是沒有發現蛛絲馬跡。不知道具體是什麼原因。

程序的執行如上圖一樣,Page_Load執行之後就完了,沒有繼續執行。無奈之下,我將用戶名改爲TextBox 下圖:
 
發現程序當我敲回車登錄時,程序執行了Button的Click事件。
於是我產生疑問了:
1、難道一個頁面必須要有兩個TextBox?
2、如果頁面再放一個TextBox,將TextBox隱藏是否可以?
3、放入Hidden控件不知是否可以?


帶着這些疑問,我依次做了實驗,發現TextBox隱藏、Hidden控件都是不行的!如下圖:


我就看看form中是否可以設置一些東西,原來form中有DefaultButton屬性,我將DefaultButton="ButtonLogin",頁面上只有一個TextBox,發現敲回車居然執行了提交。其實在頁面中已經生成這樣的代碼:
                   onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ButtonLogin')" 
我認爲:DefaultButton的設置成爲了下面的一段JS了。
<
script type="text/javascript">
   
function WebForm_FireDefaultButton(event, target) {
       
if (event.keyCode == 13 && !(event.srcElement && (event.srcElement.tagName.toLowerCase() == "textarea"))) {
       
var defaultButton = document.getElementById(target);
       
if (defaultButton && typeof(defaultButton.click) != "undefined") {
            defaultButton.click();
            event.cancelBubble
= true;
           
if (event.stopPropagation) event.stopPropagation();
           
return false;
        }
    }
   
return true;
}
   
</script>
頁面中如果有兩個或者兩個以上的TextBox就不需要設置form的defaultbutton的屬性了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章