小問題 小技巧:敲回車默認提交
最近做一個簡單的登錄界面,發現一個小問題,貼出來和大家分享一下。如果大家看着不值一提,請大家拍磚。
平時可能太大意,有些小問題居然都沒有發現。我做一個不同的管理員進行管理時,有個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的屬性了。
平時可能太大意,有些小問題居然都沒有發現。我做一個不同的管理員進行管理時,有個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的屬性了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.