A. js表單提交
表單提交是剛開始學js的朋友很迷惑的一個問題,怎麼提交,怎麼阻止默認提交,怎麼提交表單不跳轉等等問題,下面是一些示例
原始的表單提交有 button 按鈕提交和 <input /> 類型的。它們又什麼區別呢?
(1) 默認表單提交
(2)默認不會提交表單
(3) 如果在 form ,我們使用了 type=''submit 屬性,但是不讓表單默認提交,有什麼辦法呢?看下面
(4) 如果在 form ,我們使用了 type=''button 屬性,但是還是需要提交表單,這是可以使用ajax來提交,好處是可以自己控制提交,並且頁面不會跳轉
(5)若是使用默認提交的方法,且提交之前驗證表單,方法看下面
(6) 若是使用了 type='button' 屬性,但是還是想實現默認提交的方式怎麼辦? 看下面
(7) 下面的提交會發生什麼?
分析 : 點擊提交按鈕:
(1)當表單驗證失敗時,不會觸發 form.submit() 函數,所以可以觸發 <form> 的 onsubmit 句柄,又因為該句柄 return false 所以表單不會從該句柄處默認提交,所以 會在控制台列印出 表單的onsubmit事件句柄在form.submit()調用時失效'
(2)當表單驗證成功時,會觸發 form.submit() 函數提交表單,又因為 form.submit()提交表單的方式與用戶單擊 Submit 按鈕一樣,但是表單的 onsubmit 事件句柄不會被調用,所以 控制台不會列印出 表單的onsubmit事件句柄在form.submit()調用時失效
現在表單默認提交的方式基本沒人用了,都是ajax非同步提交。但是了解一些還是好的。。。
B. js表單提交和submit提交的區別
js提交和submit按鈕提交的區別:
1. js提交表單時不會帶上 submit 按鈕的值(因為沒有回被單擊) 所有瀏覽器答
2. input 回車提交 w3c瀏覽器會帶上submit按鈕的值,ie6則不會帶
解決辦法:增加一個hidden域,用這個來判斷,無論用哪種方式提交都會有值
submit按鈕上綁定提交事件:
即:<input type="submit" name="btn" value="btn" onclick="test()" />
都會帶上submit的值, 用js提交都檢測不到onsubmit狀態
w3c: 提交一次
ie6: 分兩次提交,先js在form提交
解決辦法:如果按鈕為submit則 檢測時用onsubmit事件檢測
如果按鈕為button,則檢測通過後在觸發submit事件
一定不要用js提交表單,然後又用onsubmit去檢測
單純的用js提交表單, alert, ff下阻塞表單的提交,而其他瀏覽
C. 2020-01-03 原生js中form表單提交的數據的格式
第一次寫這種文章。
1. 原生js中,form表單在提交數據的時候默認的編碼格式是application/x-www-form-urlencoded
2. 如果表單中有文件需要上傳,那麼必須在form元素中添加除了action和method(如果是get請求,可以不添加method屬性。默認情況下,form表單以get方式提交表單數據)之外的第3個屬性enctype,並且設置enctype="multipart/form-data"。
參考頁面: HTML
D. javascript表單提交並限制字數
需要限制輸入的最大字數。javascript表單提交並限制字數需要限制輸入的最大字數,如只能輸入200個字超過200個字則禁止輸入,需要將當前輸入的字元數統計出來能夠被看到,要兼容ie8適用於input、textarea這兩種最常用的輸入類型表單提交。
E. js 提交表單數據: 附件+對象的的多集合
在我們前端進行表單提交的時候,有時候會出現這種情況:Failed to convert java.lang.String to java.util.List
等等。
例如:
我後台定義一個對象:
examPaper 包含 String userId,Float userScore, MultipartFile examFile 用戶id ,試卷分數,試卷文件
對象外面 classPaper有: String classId String className List<examPaper> examPaperList
這個時候,後台接收為 ClassPaper
如果按照平常的 form-data 提交 則應按以下方式提交:
let fd = new FormData();
fd.append("classId ",classId );
fd.append("className ",className );
examPaperList.forEach((item,index) ->{
fd.append("examPaperList["+index+"].userId",item.userId);
fd.append("examPaperList["+index+"].userScore",item.userScore);
fd.append("examPaperList["+index+"].examFile ",item.examFile );
});
以這種方式就可以實現 多附件 一一 對應提交。以避免對象轉換錯誤問題。
F. js表單提交和submit提交的區別
submit和button(js表單提交),二者都以按鈕的形式展現。
項目中比較常用到的,二者最主要的區別是:
submit:默認為form提交,可以提交表單(form);
button(js表單提交):響應用戶自定義的事件,如果不指定onclick等事件處理函數,它是不做任何事情.
G. js表單提交和submit提交的區別
假設:
A表單內有<input type="submit">,通過點擊這個input來提交表單
B表單內沒有<input type="submit">,而是寫了一個<input type="button">,並且在這個input上綁定了click事件,在事件的監聽器內用js的form.submit()提交。
1.在A表單內的某個input type=text,用戶正與它交互(它是當前焦點),用戶只需要按一下鍵盤的enter,就能提交表單;而B在某些情況下不行(部分情形參考回車提交表單),只能click下面的button;當然你可以給每個input綁定一個keypress事件,再檢測按下的鍵是不是enter,如果是,就提交……只要不覺得蛋疼。
2.B表單提交不會觸發form的 onsubmit事件;A會觸發。
另外,還有HTML語義化的區別,A表單的處理更語義化,至於A能在js載入失敗時提交表單(起碼還能用),B不行之類的,就不說了。
總之,A,<input type="submit">更好,B在用戶體驗上差的有點多。
H. 怎樣用js創建表單並提交
vara=document.createElement("form");
varb=document.createElement("input");
varc=b;
b.setAttribute("type","text");
c.setAttribute("type","submit");
b.setAttribute("name","1");
c.setAttribute("name","2");
document.body.appendChild(a);
a.appendChild(b);
a.appendChind(c);
提交是:
c.click();
製造submit按鈕的點擊時間,自動完成確認
I. JavaScript如何控製表單提交
<formaction=""id="form"name="form"></form>
document.getElementById("form").submit();
這是復通過js控制form表單的制提交,在這里可以做到提交表單前數據的校驗。
J. jsp 中用js提交表單並關閉本窗口的問題。