WEB前端 -- 下拉框的觸發事件分析(onchange、onfocus、onclick)
select的onChange事件問題解決 (onchange、onfocus、onclick、onmousedown)
一、onChange事件只有在值改變時才可觸發,所以必須在每一次選擇時(尤其第一次)保證選擇的值是改變的!
所以
<select name="inv_payee" id="ECS_INVPAYEE" onchange="show_payee();" style="border:1pxsolid #ccc;"> <optionvalue=”個人” selected >個人</option> //在這要選定一個預設的值“selected” <optionvalue=”單位”>單位</option> </select>
這樣在選擇第二個時,值就會變即可觸發onChange;
二、我們用Select的onchange事件時,常會遇到這樣一個問題,那就是連續選相同一項時,不觸發onchange事件.select的onchange事件就是這樣子的.你得有Change(改變),才能觸發該事件….
<select name=selonchange=”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> <textareaid=txt></textarea>
三、
js中onchange事件是在客戶端改變輸入控制元件的值,比如一個textbox,會出發的一個事件。但是如果在js程式碼中改變一個textbox的value,而不是通過鍵盤輸入改變一個textbox值的話,是不會出發onchange事件的。
那 麼,如何在js程式碼模式通過程式碼觸發textbox控制元件的onchange事件呢,經過查閱資料,發現js提供了一個方法,可以觸發控制元件的應該是所有事件。object.fireEvent()方法,使用方法如object.fireEvent(‘onchange’),即可觸發控制元件的onchange事件。
同理,js中使用fireEvent方法還可以觸發其他的空間事件。
觸發onchange事件的問題,並不是值一旦更改就會觸發onchange事件。
對於onBlur和onFocus可以直接呼叫object.Blur()和object.Focus(),但javascript中沒有object.Change
事件。
1.ie 處理1
document.getElementByIdx_x(‘hid_provider_id’).attachEvent(“onpropertychange”,function(){alert(‘gggg’);});
2.object.fireEvent()可以觸發事件,如觸發onchange事件則是object.fireEvent(‘onchange’),以此類推。
例:
<SELECT id=select1 onchange="alert(this.value)">
<OPTION value="0">0</OPTION>
<OPTION value="1">1</OPTION>
<OPTION value="2">2</OPTION>
</SELECT>
<INPUT type="text" id="text1" name="text1">
<INPUT type="button" value="Button" onclick="select1.selectedIndex=text1.value">
手動改變select的值,會觸發onchange
指令碼改變selectedIndex,不會觸發onchange
解決辦法
if (select1.fireEvent)
select1.fireEvent(“onchange”)
else
select1.onchange()
或
<INPUT type="button" value="Button" onclick="select1.selectedIndex=text1.value;select1.fireEvent(‘onchange’)">
程式,裡因為程式裡有多個action裡並每個action有多個submit按鈕事件,為了區別程式碼,同時頁面隱藏
按鈕
<select name="select" onchange="document.getElementByIdx_x('seaoldsubmit').click();">
<option value="0">查詢條件</option>
……
</select>
<input type="submit" name="seaoldsubmit" value="確定" style="display:none">
if(submitcheck('seaoldsubmit'))
四、最近專案中遇到一個問題,要用js去觸發onchange事件。
上網找了一些資料,IE上有onpropertychang事件,可以用js去觸發這個事件,但是Firefox不支援這個事件,
然後在firefox中去繫結一個input事件。但是這是無效的啊,仍然不會去觸發onchange事件。
最後只能用未解決方案了!
用js修改值的時候,在js執行修改完之後去執行onchange事件,不過這樣即使這個值不改變的話也會呼叫這個方法。
function handle()
{
document.getElementByIdx_x('msg').innerHTML='輸入的文字長度為:'+document.getElementByIdx_x('txt').value.length;
}
//firefox下檢測狀態改變只能用oninput,且需要用addEventListener來註冊事件。
if(/msie/i.test(navigator.userAgent)) //ie瀏覽器
{
document.getElementByIdx_x('txt').onpropertychange=handle
}
else
{//非ie瀏覽器,比如Firefox
document.getElementByIdx_x('txt').addEventListener("input",handle,false);
}
</script>
</head>
<body id="mybody">
<div id="msg"></div>
<input id="txt"value="" />
以上為測試程式碼。
五、onfocus實現了任意點選,在資料庫了也只查詢一次
六、onmousedown單擊一次就查詢一次,所以每選擇一次就查詢一次,增加了資料庫的負擔。每次選擇至少要查詢兩次(一次是在資料庫載入資料,一次是選擇選項時又觸發一次)
相關推薦
WEB前端 -- 下拉框的觸發事件分析(onchange、onfocus、onclick)
select的onChange事件問題解決 (onchange、onfocus、onclick、onmousedown)一、onChange事件只有在值改變時才可觸發,所以必須在每一次選擇時(尤其第一次)保證選擇的值是改變的!所以<select name="inv_pa
單選按鈕觸發事件、下拉列表觸發事件
else if 選擇 nan int 處理 n) drop 一個 androi OnCheckedChangeListener(處理用戶在選中單選按鈕的選項時觸發) RadioGroup rg = ( RadioGroup) findById(new OnCheck
記一次後端開發者,如何完成前端下拉框三級聯動功能?
前言 下拉框三級聯動這個對於我們大家都很常見,經常在註冊一些資訊的時候,需要選取省市縣等資訊,我需要完成的就是這個功能。 但是無奈這個專案沒有前端開發,而我是一個~專注夾克20年~咦,勁霸男裝?哦~不,是專注後端開發5年~早期學習的jquery,還能記起的常用方法不多了~就知道$("#id")~~~ 但
下拉框click事件與搜尋框blur事件的愛恨糾葛
還原車禍現場 功能類似於百度搜索,搜尋框輸入內容,下拉框顯示候選項,點選候選項就選擇候選項,然後下拉框隱藏,點選外面就直接隱藏下拉框,於是我寫了以下程式碼 //參會單位聯想 $('input[name="company_name"]').bind('input propertychange', f
移動web前端下拉重新整理效果
endFn 為下拉完成後執行的函式。 function lzyxiala(endFn) { window.onload = function() { window.addEventListener('touchstart', touchstart, false); w
JS jQuery滾動條下拉到底觸發事件
var edit=true;//可控元素 $(window).scroll( &n
模擬select下拉框之多選(數據源采用模擬Ajax數據--原創)
bbb n) nowrap pac inner sel cte spl innerhtml 最近需要一個下拉多選,本來想偷懶的,所以在網上百度了一番,最終還是發現沒有一個符合自己要求的,所以我自己寫了一個插件。下面是GIF動態效果圖展示 相信大家已經看到效果了,接下來
關於三種帶搜尋下拉框的對比說明(searchableSelect、TinySelect、combobox)
searchableSelect 實測缺點 在搜尋中無法進行精準搜尋,只允許進行模糊搜尋 存在多個搜尋結果時在列表中標記顯示,無法進行全部顯示,使用者體驗不佳 不支援onchange事件,但是在屬性中提供了替代onchange的屬性 使用說明 1.第
實現antd下拉框動態新增內容(與資料庫互動)
antd下拉控制元件的動態內容新增(與資料庫互動) antd這個框架給開發帶來了極大的方便,但同時,我認為還有一些不方便的地方:常用的邏輯在文件中沒有體現。需要前端開發經驗的人才能快速上手,而我剛剛接觸這個東西,antd基本將所有常用的控制元件全都封裝了,包括select下拉框,在以往的開發當中,我常常將下
Ajax 獲取下拉框分頁資料(滑鼠滾動分頁)
適用場景:下拉框中有大量資料的情況(建議100條資料以上就要考慮使用分頁獲取的方式了)。 直接上程式碼 引入相關js和css select2/select2.min.css select2/select2.min.js select2
js實現下拉框聯動選中日期(select 日期聯動更改)
html程式碼 <head> <script type="text/javascript" src="/js/jquery-1.11.1.min.js" ></script> <script type="text/javascr
json 後臺傳list物件到前臺js獲取便利顯示到下拉框,避免亂碼(ssm)
1.後臺 @RequestMapping(value="/getGrade",produces="text/json;charset=utf-8") @ResponseBody public String getGrade(@RequestParam String st
通過ajax返回的json資料,給下拉框預設選中顯示(給下拉框賦的選中值)
//編輯資料渲染 $("#zh_update").click(function(){ if(checknum==1){ $(".zh_update").show(); //獲取當前選中的引數
IONIC 頁面下拉載入新的資料(ion-infinite-scroll的使用)
類似於淘寶,瀏覽商品時,每次下拉都會刷新出新的資料(需要配合分頁使用,分頁在我部落格中有介紹:https://mp.csdn.net/postedit/83584133) html頁面 <ion-heade
Web前端:如何實現選擇select下拉框選中跳轉其他頁面
option chang 前端 實現 cati onchange 下拉框選中 b- class <select onchange="window.location=this.value;"><option value="a.html">用戶管理<
easyui 綁定下拉框,下拉框選擇改變事件的觸發方法
height mbo options ble data 方法 cte com ear //①定義下拉框 //離線公司【個人或公司】 下拉框 var tmpComOrPer = { type: ‘combobox‘, options
中文輸入法觸發input事件 js繫結事件:addEventListener和on的區別 select下拉框用empty()方法 清空option
中文輸入法觸發input事件 compositionstart 當瀏覽器有非直接的文字輸入時, compositionstart事件觸發. compositionend 當瀏覽器是直接的文字輸入時, compositionend事件觸發 解決方法: 這裡還有一個問題: 在有些瀏
web前端:CSS3製作炫酷的下拉框
CSS3炫酷的下拉框的原理: 1。首先,有一個導航下拉列表,也就是說,一個下拉列表出現在滑鼠上。 2。然後發現每個選項出現在下拉里側的兩個不同的方向。 三。出現方式是奇數項從左邊進入,偶數項從右邊進入,並且進入方式是滑動和漸變。 設計素描 事實上,這是用CSS3進行轉換和動
下拉框選中一個選項後 觸發事件
第一個例項 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <script language="JavaScript
備忘錄----------下拉框選擇觸發事件
<select onchange="func()> <option value="0" >選項一</option> <option value="1" >選項二</option>