国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

表單元素的submit()方法和onsubmit事件應用概述

2024-05-06 14:19:43
字體:
來源:轉載
供稿:網友

表單元素擁有submit方法,同時也具有onsubmit事件句柄,用于監聽表單提交。可以使用elemForm.submit();方法觸發表單提交。
1、表單元素中出現了name="submit"的元素
這種情況下elemForm.submit();將不會觸發表單提交,因為表單原始的submit方法將會被覆蓋(formElem.submit就是對該元素的引用)。
2、elemForm.submit();不會觸發表單的onsubmit事件
沒有為什么,標準中就是這么規定的。
與此有些類似的是onfocus、onblur和focus()、blur()之間的關系卻不同,調用elem.blur()或elem.focus()卻會觸發onblur和onfocus事件。
這些為我們提供了一個思路,在設計一些UI組件時,需要考慮一些事件在內部調用時是否要觸發相關事件。例如Dialog組件,它具有onopen事件,同時返回的對象也會有open()方法,我們這時就必須考慮下open()方法是否需要觸發onopen()事件。
3、動態創建表單時遇到的問題
經常使用的一種方法如下,他會在表單submit前調用,根據validate()函數的返回值決定是否需要提交表單。
代碼如下:
<form onsubmit="return validate();"></form> 

然而,如果要動態地為一個表單添加驗證,即HTML代碼中沒有寫onsubmit,而在頁面加載后用javascript給這個form加一個handler,問題就 來了。假設我們已經得到了表單的DOM節點,保存在變量elemForm中,一般這樣來給它加上handler:
代碼如下:
var check = function() {  
    if ('OK') {  
        return true;  
    } else {  
        return false;  
    }  
};  
if (elemForm.addEventListener) {  
    elemForm.addEventListener("submit", check, false);  
} else if (elemForm.attachEvent) {  
    elemForm.attachEvent("onsubmit", check);  


問題就出現了:在Firefox和Chrome中"return false;"是不能阻止表單的提交的(在IE中可以),這就是為什么大家在onsubmit屬性中要寫"return check()",而不僅僅是"check()"。

原因是什么呢?請看ECMAScript Language Binding,其中明確地寫著,"Object EventListener: This is an ECMAScript function reference. This method has no return value. The parameter is a Event object",意思就是event listener沒有返回值。換一種理解,addEventListener可以為元素綁定多個監聽函數,某一個事件監聽函數的返回值,不可以作為整個事件的返回值。可以使用下面的方法解決
代碼如下:
function check(ev) {  
    ev = ev || window.event; // Event對象  
    if (ev.preventDefault) { // 標準瀏覽器  
        e.preventDefault();  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 铜陵市| 鹤峰县| 揭阳市| 浪卡子县| 奎屯市| 松潘县| 东乡| 长春市| 枣阳市| 玉龙| 天门市| 益阳市| 隆回县| 黎平县| 温州市| 绩溪县| 石家庄市| 涿鹿县| 开远市| 沭阳县| 河北省| 厦门市| 泰宁县| 佛山市| 侯马市| 灌南县| 赫章县| 山丹县| 吉林省| 景谷| 潞西市| 定陶县| 遂平县| 土默特右旗| 平阳县| 阳西县| 北安市| 无棣县| 余干县| 韩城市| 丘北县|