zoukankan      html  css  js  c++  java
  • 搜索框(附带事件函数)

      最近做项目的时候,做的搜索框,今天终于做完善了,特贴出来,怕以后自己忘了,写完之后觉得自己写的还行,

    搜索框的事件有:

    1.获取焦点事件

    2.键盘事件:这个事件又分为点击“delete”,“BackSpace”,字符键三种情况

    不废话了,直接上代码:

    var senceNameSelectedId=null;
    var msgList=[];
    var tempInputsource=null;
    var senceNames=[];
    var currentPos=-1;
    var senceList=null;
    //设置3个开关,“0”:代表开。“1”代表关。
    //Switch:"0"代表输入源开,场景关;1代表输入源关,场景开;2代表同时关
    var Switch;

    function searchBox(){
    Switch=0;
    var input1=$("#gov_search_key1");//信号源搜索输入框对象
    var input2=$("#gov_search_key2");//场景搜索输入框对象
    //为搜索输入框绑定事件
    //1.获得焦点
    input1.bind("focus",getFocus);
    input2.bind("focus",getFocus);
    //3.keyUp
    input1.bind('keyup',sendKeyWord);
    input2.bind('keyup',sendKeyWord);
    $("#InputH2Id").click(function(){
    if(Switch==0){//这种情况下:Switch1=0,Switch1=
    Switch=2;
    }else if(Switch==1){
    Switch=0;
    }else if(Switch==2){
    Switch=0;
    }
    });
    $("#senceH2Id").click(function(){
    if(Switch==0){
    Switch=1;
    }else if(Switch==1){
    Switch=2;
    }else if(Switch==2){
    Switch=1;
    }
    });
    }
    //获得焦点的事件函数
    function getFocus(event){
    //得到获取焦点对象的id
    var id=event.target.attributes.id.nodeValue;
    //判断获取焦点的对象时输入源搜索框还是场景搜索框
    if(id!=null&&id=="gov_search_key1"){
    if(Switch!=0){
    $("#InputH2Id").click();
    }

    //让信号源的tab页面展开显示
    //1.获取焦点的是输入源搜索框
    var keyWord=$("#gov_search_key1").val();
    if(keyWord!=null&&keyWord!=""){
    sendKeyWordToBack(keyWord,1);
    }

    }else if(id!=null&&id=="gov_search_key2"){
    //2.获取焦点的是场景搜索框
    if(Switch!=1){
    $("#senceH2Id").click();
    }

    var keyWord=$("#gov_search_key2").val();
    if(keyWord!=null&&keyWord!=""){
    sendKeyWordToBack(keyWord,2);
    }
    }
    }

    //keyUp事件函数
    function sendKeyWord(event){
    //得到触发事件对象的id
    var id=event.target.attributes.id.nodeValue;
    var type=null;
    //输入框中的内容
    var keyWord=null;
    if(id!=null&&id=="gov_search_key1"){
    //1.获取焦点的是输入源搜索框
    keyWord=$("#gov_search_key1").val();
    type=1;
    }else if(id!=null&&id=="gov_search_key2"){
    //2.获取焦点的是场景搜索框
    keyWord=$("#gov_search_key2").val();
    type=2;
    }
    if(event.keyCode==8){
    //点击的“Backspace”键时
    if(keyWord==null||keyWord==""){
    if(type==1){

    if(Switch==1){
    $("#InputH2Id").click();
    }
    iniInputTree("input_list",tempInputsource);
    $("#gov_search_key1").focus();
    }else if(type==2){
    if(Switch==0){
    $("#senceH2Id").click();
    }
    initSenceList();
    }
    } else{
    sendKeyWordToBack(keyWord,type);
    }
    }else if(event.keyCode == 38||event.keyCode == 40){
    //38代表向上箭头,40代表向下箭头
    var input=$("#gov_search_key2");

    if(type==2){
    if(event.keyCode == 38){
    if(senceNames.length>0){
    //currentPos=currentPos-1;
    if(currentPos==0||currentPos==-1){
    currentPos=senceNames.length-1;
    input.val(senceNames[currentPos]);
    }else{
    currentPos=currentPos-1;
    input.val(senceNames[currentPos]);
    }
    }
    }else if(event.keyCode == 40){
    if(senceNames.length>0){
    if(currentPos==senceNames.length-1){
    currentPos=0;
    input.val(senceNames[currentPos]);
    }else{
    currentPos=currentPos+1;
    input.val(senceNames[currentPos]);
    }
    }
    }
    }
    }else if(event.keyCode == 108 || event.keyCode==13){
    //108代表的是主键盘上的enter键,13代表的是数字键盘上的enter键(这个事件只对场景搜索有用)
    /*
    * hjw
    * 调用场景的函数
    * */
    currentPos=-1;
    var vWallId = getVideoWallIdForSenece();//大屏的id
    var content=$("#gov_search_key2").val();
    if(content==""||content==null){
    return false;
    }
    var flag=false;
    for(var i=0;i<msgList.length;i++){
    var tempSenceName=msgList[i].split("-")[0];
    if(content==tempSenceName){
    senceNameSelectedId=msgList[i].split("-")[1];
    flag=true;
    }
    }
    //点击enter键,就会弹出对应的场景预览窗
    if(flag){
    getSenceData(vWallId,senceNameSelectedId);
    }else{
    return false;
    }
    }
    else{
    //点击字符按键时
    sendKeyWordToBack(keyWord,type);//向后台查询
    }
    }

    //根据关键字向后台查询,得到若干条数据,或者没有数据(现在模拟若干条数据)
    function sendKeyWordToBack(keyWord,type){
    keyWord=$.trim(keyWord);
    //首先判断需要查询的是输入源还是场景
    if(type==1){
    //说明需要查询的是输入源
    if(keyWord==""||keyWord==null){
    //这种情况出现在当连续敲击“Backspace”键删除时
    iniInputTree("input_list",tempInputsource);
    return;
    }else{
    //当keyWord不为空的时候
    var ids=[];
    for(var i=0;i<tempInputsource.length;i++){
    //将输入源的信号源名称修改为小写
    var nameLower=tempInputsource[i].name.toLowerCase();
    //将keyWord也转换为小写
    var tempKeyword=keyWord.toLowerCase();
    if(nameLower.indexOf(tempKeyword)>-1){
    ids.push(tempInputsource[i].id);
    }
    }
    if(ids.length==0){

    iniInputTree("input_list",[]);
    return;
    }
    var searchSignals=[];
    //用查询的结果重新构造树

    //iniInputTree("input_list",tempInputsource);

    for(var i=0;i<ids.length;i++){
    //var node=zTree.getNodeByParam("id",ids[i],null);
    var node=findNodeById(ids[i]);
    if(node.pId!=0&&node.pId!=null){
    if(!isInTree(node.pId,searchSignals)){
    //var parentNode=zTree.getNodeByParam("id",node.pId, null);
    var parentNode=findNodeById(node.pId);
    searchSignals.push(parentNode);
    }
    }else if(node.pId==null&&!isInTree(node.id,searchSignals)){
    searchSignals.push(node);
    }
    }
    iniInputTree("input_list",searchSignals);
    zTree.expandAll(true);
    //使信号源搜索框重新获得焦点
    $("#gov_search_key1").focus();
    }
    }else if(type==2){
    var aData = [];
    if(keyWord==""||keyWord==null){
    return;
    }
    // var senceList=senceTree.getNodes();
    if(senceList.length==0){
    msgList=[];
    return;
    }
    var senceNodes=[];
    for(var i=0;i<senceList.length;i++){
    var name=senceList[i].name;
    if(name.indexOf(keyWord)>-1){
    aData.push(senceList[i].name);
    msgList.push(senceList[i].name+"-"+senceList[i].id);
    senceNodes.push(senceList[i]);
    }
    }
    senceNames=aData;
    initSenceTreeView(senceNodes);
    }
    }
    //判断父节点是否已经在构造的搜索树中了
    function isInTree(pId,searchSignals){
    for(var i=0;i<searchSignals.length;i++){
    var node=searchSignals[i];
    if(node.id==pId){
    return true;//父节点已经存在于searchSignals了
    }
    }
    return false;
    }
    //根据id在tempInputsource上查找节点
    function findNodeById(id){
    for(var i=0;i<tempInputsource.length;i++){
    if(tempInputsource[i].id==id){
    return tempInputsource[i];
    }
    }
    }

  • 相关阅读:
    将数据库dbcp连接池改为c3p0连接池(草稿,别点)
    java遍历set集合
    mybatis映射文件(转)
    java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
    redis通过json方案存取对象com.alibaba.fastjson.JSONException: syntax error, expect
    PL/SQL配置oracle客户端,登录远程数据库配置
    Weblogic部署项目三种方式
    Service具体解释(二):Service生命周期
    Coredata — 入门使用
    UML建模学习1:UML统一建模语言简单介绍
  • 原文地址:https://www.cnblogs.com/hujingwei/p/4772526.html
Copyright © 2011-2022 走看看