js模擬點(diǎn)擊事件實(shí)現(xiàn)代碼
<h3>請單擊“提交”,測試提交按鈕的單擊事件也被觸發(fā)了。</h3>
<button id="btn">提交</button>
<form action="#" method="get" id="form">
<input type="text" name="site" value="www.woiweb.net" readonly/>
<input id="subbtn" type="submit" value="先別點(diǎn)擊此按鈕提交" onclick="alert('我已經(jīng)提交了');"/>
</form>
Javscript:
<script type="text/javascript">
var sub = document.getElementById("subbtn");
var btn = document.getElementById("btn");
//通用方法
btn.onclick = function() {
sub.click();
}
</script>
經(jīng)過測試,IE,F(xiàn)F,Chrome,Opera,Safari都沒有問題,均可正常提交表單。
但在實(shí)際的設(shè)計(jì)中,為了讓提交按鈕更好看,buildder經(jīng)常把它們用a標(biāo)簽來處理,加個(gè)背景圖片來模擬按鈕,我們?nèi)匀挥蒙厦娴乃悸穪韲L試,增加一個(gè)a標(biāo)簽,讓它來提交表單,我們僅修改html。
Html:
<h3>請單擊“提交”,測試提交按鈕的單擊事件也被觸發(fā)了。</h3>
<button id="btn">提交</button>
<form action="#" method="get" id="form">
<input type="text" name="site" value="www.woiweb.net" readonly/>
<!--<input id="subbtn" type="submit" value="先別點(diǎn)擊此按鈕提交" onclick="alert('我已經(jīng)提交了');"/> -->
<a id="subbtn" href="javascript:;" onclick="alert('在此調(diào)用提交表單的方法')">模擬提交按鈕</a>
</form>
javascript:
<script type="text/javascript">
var sub = document.getElementById("subbtn");
var btn = document.getElementById("btn");
//通用方法
btn.onclick = function() {
sub.click();
}
</script>
運(yùn)行后,問題出現(xiàn)了,IE、FF、Opera均OK,但Chrome和Safari不能正常運(yùn)行,后來網(wǎng)上搜索了下,發(fā)現(xiàn)a標(biāo)簽并不是和按鈕一樣有onclick()事件的,解決辦法是針對 IE 和 FF編寫不同的邏輯,JS代碼如下:
javascript:
<script type="text/javascript">
var sub = document.getElementById("subbtn");
var btn = document.getElementById("btn");
//通用方法
btn.onclick = function() {
//sub.click();
if (/msie/i.test(navigator.userAgent)) //IE
{
sub.fireEvent("onclick");
} else {
var e = document.createEvent('MouseEvent');
e.initEvent('click', false, false);
sub.dispatchEvent(e);
}
}
</script>
至此,問題解決,雖然這個(gè)問題很簡單,但很容易被大家忽略,貼出來和大家一起分享。
語法:
createEvent(eventType)
| 參數(shù) | 描述 |
| eventType | 想獲取的 Event 對象的事件模塊名。關(guān)于有效的事件類型列表,請參閱”說明”部分。 |
返回值
返回新創(chuàng)建的 Event 對象,具有指定的類型。
拋出
如果實(shí)現(xiàn)支持需要的事件類型,該方法將拋出代碼為 NOT_SUPPORTED_ERR 的 DOMException 異常。
說明
該方法將創(chuàng)建一種新的事件類型,該類型由參數(shù) eventType 指定。注意,該參數(shù)的值不是要?jiǎng)?chuàng)建的事件接口的名稱,而是定義那個(gè)接口的 DOM 模塊的名稱。
下表列出了 eventType 的合法值和每個(gè)值創(chuàng)建的事件接口:
| 參數(shù) | 事件接口 | 初始化方法 |
| HTMLEvents | HTMLEvent | iniEvent() |
| MouseEvents | MouseEvent | iniMouseEvent() |
| UIEvents | UIEvent | iniUIEvent() |
用該方法創(chuàng)建了 Event 對象以后,必須用上表中所示的初始化方法初始化對象。關(guān)于初始化方法的詳細(xì)信息,請參閱 Event 對象參考。
該方法實(shí)際上不是由 Document 接口定義的,而是由 DocumentEvent 接口定義的。如果一個(gè)實(shí)現(xiàn)支持 Event 模塊,那么 Document 對象就會(huì)實(shí)現(xiàn) DocumentEvent 接口并支持該方法。
相關(guān)文章
JavaScript實(shí)現(xiàn)移動(dòng)端滑動(dòng)選擇日期功能
這篇文章主要介紹了JavaScript實(shí)現(xiàn)滑動(dòng)選擇日期功能,基于sui-mobile的移動(dòng)端實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2016-06-06
js自己實(shí)現(xiàn)一個(gè)大文件切片上傳+斷點(diǎn)續(xù)傳的示例代碼
本文主要介紹了js自己實(shí)現(xiàn)一個(gè)大文件切片上傳+斷點(diǎn)續(xù)傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
js基礎(chǔ)之DOM中document對象的常用屬性方法詳解
下面小編就為大家?guī)硪黄猨s基礎(chǔ)之DOM中document對象的常用屬性方法詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10
鼠標(biāo)拖拽移動(dòng)子窗體的JS實(shí)現(xiàn)
這篇文章主要介紹了鼠標(biāo)拖拽移動(dòng)子窗體的JS實(shí)現(xiàn),需要的朋友可以參考下2014-02-02
.net MVC+Bootstrap下使用localResizeIMG上傳圖片
這篇文章主要為大家詳細(xì)介紹了.net MVC和Bootstrap下使用 localResizeIMG上傳圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
fckeditor粘貼Word時(shí)彈出窗口取消的方法
這篇文章主要介紹了fckeditor粘貼Word時(shí)彈出窗口取消的方法,是應(yīng)用fckeditor時(shí)非常實(shí)用的技巧,需要的朋友可以參考下2014-10-10
npm install報(bào)錯(cuò)無法創(chuàng)建packge.json文件的解決辦法
當(dāng)你在運(yùn)行 npm install 時(shí)遇到錯(cuò)誤,提示無法找到 package.json 文件,也沒有創(chuàng)建一個(gè) package.json 文件,只創(chuàng)建了一個(gè)package-lock.json文件,本文給大家介紹詳細(xì)的解決辦法,需要的朋友可以參考下2024-02-02
JS實(shí)現(xiàn)Fisheye效果動(dòng)感放大菜單代碼
這篇文章主要介紹了JS實(shí)現(xiàn)Fisheye效果動(dòng)感放大菜單代碼,涉及JavaScript事假監(jiān)聽機(jī)制及定時(shí)函數(shù)等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10

