您好,登錄后才能下訂單哦!
一、問題
不操作頁面,實現模擬select的事件,即,自動出現下拉框,自動點擊下拉框的值,select文本框的值隨之改變
二、經過
剛開始查看layui官方文檔,發現僅僅只是有select監聽事件,即:
form.on('select(filter)', function(data){ console.log(data.elem); //得到select原始DOM對象 console.log(data.value); //得到被選中的值 });
但是,這個事件需要操作頁面,不可取。
三、結果
查看layui源碼,關于select事件的實現,在form.js中,看實現的原理。自動觸發select點擊原理就是:
1、找到當前select的下一個div.layui-select-title節點的子元素,即input或者i,實現點擊事件。
2、上一步驟完了之后,出現下拉框,但是下拉框還沒有點擊事件;需要再實現你想讓下拉框里面的哪個值有點擊事件。此時,需要通過select找到下拉框dl里面的dd的具體的值,然后實現點擊事件。
這樣就完整的實現了模擬select點擊事件。
源碼:
<!-- HTML --> <select name="modules" lay-verify="required" lay-search=""> <option value="">直接選擇或搜索選擇</option> <option value="1">layer</option> <option value="2">form</option> <option value="3">layim</option> </select>
// JS: $('select[name="modules"]').next().find('.layui-select-title input').click(); $('select[name="modules"]').next().find('.layui-anim').children('dd[lay-value="20"]').click();
雖然實現了效果,實際上看不出來效果,加一個延遲就可以了:
// 優化后的js $('select[name="modules"]').next().find('.layui-select-title input').click(); // 延遲3s再實現自動點擊下拉框事件 setTimeout(function () { $('select[name="modules"]').next().find('.layui-anim').children('dd[lay-value="20"]').click(); },3000);
以上這篇layui問題之模擬select點擊事件的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。