zoukankan      html  css  js  c++  java
  • JS+JQ原生类似双向数据绑定实现

    // 原生双向数据绑定
    <div class="row paddingLink">
        <div class="col-md-4">
            <label class="col-md-4"><span class="required">*</span>开户支行名称</label>
              <div class="col-md-8">
                <input id="agentOpenAccName" class="form-control agentOpenAccName" autocomplete="off" placeholder="请输入或选择" onfocus="showAgentDiv(this)" oninput="filterAgentBank()" onblur="hiddenAgentDiv()">
                <div id="dataAgentList" class="searchContent" onclick="pushAgentInput()" style="display:none;"></div>
                <article class="specialShow prompt">请输入开户支行名称</article>
              </div> 
       </div>
    </div>
    
    
    let dataArr = []
        function getopenAccName() {
            dataArr = []
            let bankCode = $(".agentOpenBankName option:selected").val()
            let areaCode = $(".agentBankCounties option:selected").val()
            if(areaCode != "-1") {
                ajaxPromise({
                    data: { url: "/admin/posmer/posArea", requestType: "POST", expression: "branchName", areaCode: areaCode, bankCode: bankCode }
                }).then(res => {
                    $.each(res, function(i,n) {
                        $(".searchContent").append(`<p data="`+n.branch_no+`">`+n.branch_name+`</p>`)
                        dataArr.push(n.branch_name)
                    });
                }).catch(err => {
                    base.showMsg("服务异常", 1500)
                })
            }
        }
        
        function showAgentDiv(x, node) {
            dataAgentList.style.display = ""
            $(x).removeClass("requiredIpt")
            $(x).siblings("article").addClass("specialShow")
        }
        
        function hiddenAgentDiv() {
            // 异步一下
            setTimeout(() =>{
                dataAgentList.style.display = "none"
            }, 200);
        }
    
        function filterAgentBank() {
            let e = event.target || event.srcElement
            let str = e.value
            dataAgentList.innerHTML = "" //清空div下的所有P元素
            dataArr.forEach( (item) => {
                if (item.indexOf(str) != -1) {
                    let p = document.createElement("p")
                    let text = document.createTextNode(item)
                    p.appendChild(text)
                    dataAgentList.appendChild(p)
                }
            })
            if (dataAgentList.innerHTML == "") {
                let p = document.createElement("p")
                let text = document.createTextNode("暂无数据")
                p.style.color = "#F5F5F5"
                p.onclick =  () => { event.stopImmediatePropagation() } //阻止事件的冒泡
                p.appendChild(text)
                dataAgentList.appendChild(p)
            }
        }
        
        // 搞一个双向绑定
        function pushAgentInput() { //利用事件委托机制,获取点击的P源
            let e = event.target || event.srcElement
            let input = document.getElementById("agentOpenAccName")
            input.value = e.innerText
            input.data = e.getAttribute("data")
            dataAgentList.style.display = "none"
        }
    

      

  • 相关阅读:
    SpringMVC中的@Controller和@RequestMapping到底什么鬼?
    String、StringBuffer和StringBulder
    对spring的理解是什么?
    Maven依赖解析
    【Java框架型项目从入门到装逼】第一节 Spring框架 IOC的丧心病狂解说
    python学习记录(二)安装python编辑器
    python学习记录(一)安装python
    C#.net ListView item 拖动排序实现方法
    使用sql语句实现跨数据库获取信息
    Asp.net弹出层并且有遮罩层
  • 原文地址:https://www.cnblogs.com/Essaycode/p/14838165.html
Copyright © 2011-2022 走看看