|
在IE和Firefox下
1、<form>屬性的“action”字段必填;
2、有一個type="submit"的“input”。
在Chrome和Safari下
滿足第一條即可。(注釋1)
所以,如果要控制提交行為的話(比如,提交前檢查必填項是否已填),可以在type="submit"的“input”后添加Javascript“onXXX(比如onClick)”事件。而如果需要用異步交互來檢測相關字段,則無效了。因為return false是作為onreadystate=的子函數,并不能控制全局。這時就需要用到<form>的“onsubmit”屬性(注釋2)。比如:
HTML
復制代碼 代碼如下:
<form name="form1" id="form1" action="act.php" method="post" onsubmit="myfn();return false;">
myfn()是自己定義的函數:無論通過什么辦法(比如敲擊“enter”或點擊type="submit"(而不是type="button")的“input”按鈕)提交,都會觸發這個這個函數。于是,大可不必再在type="submit"的“input”后添加Javascript事件“onXXX”了。直接在“onsubmit”中控制,更直觀與統一,除非有意控制提交方式(是onClick還是什么)。
return false位于末尾,表示不提交本表單。提交表單的字句document.form1.submit()可以作為myfn()的一個選擇條件的分支。
總結:
這樣,<form>有“action”和“onsubmit”屬性,有type="submit"的“input”的提交按鈕后,就可以在任何瀏覽器下(不行嗎?請給我反饋)實現使用“Enter”鍵和鼠標都可以對表單的相關字段進行異步(Ajax)和同步(單純的Javascript)檢查并予以提交。
其他:
1、如果使用type="button"來異步檢測相關字段呢?
這樣,這個“input”必須得有一個事件觸發器。在IE和FF下,無法直接在文本框中按下“Enter”來提交表單。如果要的話,需要使用額外的函數來監聽用戶按下了什么,給出一個怎樣的反映(注釋3)。更糟糕的是,在Ch和Sa下,會忽略是否有type="submit"按鈕,而直接根據“action”屬性來提交表單,如此以來,便無法實現預期的檢測,可能還有更麻煩的后果。
2、如果不寫“action”屬性,直接異步提交表單呢?
這樣,通過異步的方式提交表單,而不僅僅是檢測,這個屬性則沒有必要。而且還是多余。假如這樣能提供更好的用戶體驗,何樂而不為呢?呵呵。
【注釋】
1 在IE8,FF,Ch中測試有效。Opera和Sa沒有測試。
復制代碼 代碼如下:
chrome在表單中敲回車鍵會觸發提交表單
一個登錄口在IE、firefox下敲回車后用js通過ajax驗證成功后進行跳轉,幾個輸入框寫在了一個form中,當用戶輸入用戶密碼后觸發ajax進行判斷,此時IE和firefox都不會進行進行form的提交,且form中沒有submit.而chorm和safari都會把此時input所有的form進行submit.
以后ajax的話,切記不要寫在form當中.
2 這篇文章
復制代碼 代碼如下:
chrome 瀏覽器上避免回車提交表單
之前在論壇上發過一貼,問:
"在chrome瀏覽器上
我改變回車按鍵或者讓它無效也可以" 的問題,終無解
問題當時是為了避免回車提交表單引出的,現在這個問題到是解決了,其實很簡單,只怪自己沒想到
在Form的提交事件上動手腳:
onsubmit=“MySubmit();return false;"
MySubmit()可以用來做提交時的判斷,如可一用另一個隱藏的表單完成自定義的提交任務。
這個問題有點菜,但的在chrome上改變回車事件卻不好搞,有知情者還望告知。
3 參考以前的文章
同時在IE和FF獲取KeyCode
以前一直在IE8中測試網站,后來寫的一部分含有Ajax的代碼出現了故障,不得已下載了Firefox以及它的插件Firebug,才發現,FF不支持windows.event事件。于是換了一種思路。
HTML
<input type="password" name="psw" id="loginpsw" onkeypress="submit1(event)"/>
Javascript
復制代碼 代碼如下:
function submit1(e){
var isie = (document.all) ? true : false;//判斷是IE內核還是Mozilla
var key;
if (isie)
key = window.event.keyCode;//IE使用windows.event事件
else
{
key = e.which;//3個按鍵函數有一個默認的隱藏變量,這里用e來傳遞。e.which給出一個索引值給Mo內核(注釋1)
}
if(key==13)
send1('loginemail','loginpsw');//觸發的事件,可自定義
}
JavaScript技術:不同瀏覽器對回車提交表單的處理辦法,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。