我們用Select的onchange事件時,常會遇到這樣一個問題,那就是連續選相同一項時,不觸發onchange事件.select的onchange事件就是這樣子的.你得有Change(改變),才能觸發該事件....
掌握了它的特性后,相應的解決辦法也很簡單.
<select name=sel onchange="bao(this.options[this.options.selectedIndex].value)"> <option value="">請選擇 <option value="1">Item 1 <option value="2">Item 2 <option value="3">Item 3 </select> <script> function bao(s) { txt.value+=s; //選擇后,讓第一項被選中,這樣,就有Change啦. document.all.sel.options[0].selected=true; } </script> <textarea id=txt></textarea>
select 或text的onchange事件需要手動(通過鍵盤輸入)改變select或text的值才能觸發,如果在js中給select或text賦值,則無法觸發onchang事件,
例如,在頁面加載完成以后,需要觸發一個onChange事件,在js中用document.getElementByIdx_x("se").value="ttt";直接給select或text賦值是不行的,要想實現手動觸發onchange事件,需要在js給select賦值后,加入下面的語句,(假設select的id為sel)
document.getElementByIdx_x("sel").fireEvent('onchange') 來實現,
例子:
<html><body> <select id="sel" name="test" onchange="demo()"> <option value="1" selected>測試一</option> <option value="2">測試二</option> <option value="3">測試三</option> <option value="4">測試四</option> </select> <input id="tex" type="text" name="text1" id="text1"> <script> document.getElementByIdx_x("sel").value="3"; document.getElementByIdx_x("sel").fireEvent("onchange"); function demo() { var d=document.getElementByIdx_x("sel").value; document.getElementByIdx_x("tex").value=d; //alert(d); } </script> </body></html>
上面的代碼產生的效果就相當於鼠標在select元素上進行了選擇,模仿出了select的onchange效果
該文轉自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075a5495de9f03c733d0123b598cd8f4997ac925f75ce786a6459db0144dc0edfc15151cb37912aa8f847b0ebb62592dec5a3d54323cb44737e97808c4d0065dd1ff0034193b19838022f16ad9e34728f5c605a9e3441c61aa5f7331e56dba581091bd42ba07660e4b844b02962c404d068&p=8b2a971491d900fb01bd9b7e0b1c83&newp=8773c64ad48506b908e29478070ac1231610db2151ddd315399385&user=baidu&fm=sc&query=%B8%F8select%B8%B3%D6%B5%2C%B2%BB%B4%A6%B7%A3onchange%CA%C2%BC%FE&qid=&p1=3