• 使用状态模式控制 输入内容自动跳转到相应正则表达式文本框


    $("#check_status").bind('click', function ()
    {
    if ($("#check_status").attr("checked") == true)
    {
    ChangeState();
    
    } else {
    ChangeState();
    }
    });
    var state = "off";
    function ChangeState()
    {
    if (state == "on")
    { 
    EasyInputOn();//開啟
    this.state = "off";
    //alert(state);
    }
    else
    {
    EasyInputOff();//關閉
    this.state = "on";
    //alert(state);
    }
    };
    
    
    $(function EasyInputOn() {
    SetOnKeyUp();
    });
    
    function EasyInputOn() {
    SetOnKeyUp();
    };
    function EasyInputOff() {
    RelieveKeyUp();
    }
    //增加EventHandler,
    function addEventHandler(oNode, sEvt, fFunc, bCapture) {
    
    //if (typeof (window.event) != "undefined")
    // oNode.attachEvent("on" + sEvt, fFunc);
    // 
    //else
    oNode.addEventListener(sEvt, fFunc, bCapture);
    }
    //刪除EventHandler,
    function removeEventHandler(oNode, sEvt, fFunc, bCapture) {
    
    //if (typeof (window.event) != "undefined")
    // //oNode.detachEvent("on" + sEvt, fFunc);
    //else
    oNode.removeEventListener(sEvt, fFunc, bCapture);
    }
    //為了能夠添加事件,對函數處理使得能夠傳遞參數
    function bind(obj, handler) {
    obj = obj || window;
    var args = [];
    for (var i = 2; i < arguments.length; i++) {
    args.push(arguments[i]);
    }
    return function () { handler.apply(obj, args) };
    };
    //為所有文本框綁定keyup事件
    function SetOnKeyUp() {
    __handleDic = new Array();
    var inputs = document.getElementsByTagName("input");//取所有文本框
    for (var i = 0; i < inputs.length; i++) {
    if (inputs[i].getAttribute("isEasyInput") == null) continue;//只有有此屬性的文本框才掛上
    //inputs[i].onclick = function() { alert('Hello!World'); };
    
    inputs[i].isEqualNode
    //inputs[i].onkeyup = function () { test(el); }; //可行,但是參數有問題。且這種方法會覆蓋掉DOM本身的事件
    var mothe = bind(inputs[i], DomKeyUpEvent, inputs[i]);
    addEventHandler(inputs[i], "keyup", mothe);//優先級是DOM本身的事件才到這些綁定的事件
    // addEventHandler(inputs[i], "keyup", function (d) { test(d+1); }, false);
    // addEventHandler(inputs[i], "keyup", function (d) { test(d+2); }, false);
    
    __handleDic[inputs[i].id] = mothe;
    }
    }
    //為所有文本框取消綁定的keyup事件
    function RelieveKeyUp() {
    
    //alert(__handleDic.length);//就算有值也是0
    for (var key in __handleDic) {
    var o = document.getElementById(key);
    //o.removeEventListener("keyup", __handleDic[key]);
    
    removeEventHandler(o, "keyup", __handleDic[key], false);
    }
    }
    //DOM觸發事件
    function DomKeyUpEvent(arg) {
    //判斷是不是需要智能輸入的對象
    //if (arg.getAttribute("isEasyInput") == null) {
    // alert("不是支持對象");
    // return;
    //}
    //alert(arg);
    Judge(arg)
    }
    //匹配判斷組件
    function Judge(arg) {
    
    var inputs = document.getElementsByTagName("input");//取所有文本框
    //alert("文本框的數量" + inputs.length)
    for (var i = 0; i < inputs.length; i++) {
    if (inputs[i].getAttribute("isEasyInput") == null) continue;
    else if (inputs[i].getAttribute("regex") == null) continue;
    else {
    var souStr = arg.value;
    //alert(souStr);
    var regex = inputs[i].getAttribute("regex");
    //alert(regex);
    //var testresult = "78".search("\d{3}");
    //alert(testresult);
    var result = souStr.search(regex);//返回結果 0 是匹配,-1是不匹配
    //alert(result);
    if (result == 0) {
    MessageTransmit(arg, inputs[i])
    return;
    }
    //alert("這一個");
    }
    //alert(inputs[i].id);
    }
    }
    //消息轉發組件
    function MessageTransmit(source, taget) {
    var message = source.value;
    source.value = "";
    taget.value = message;
    //alert("OK");
    }
    View Code
  • 相关阅读:
    Response生成注册验证码实现例子02
    Mysql 自增字段起始值auto_increment的修改方法
    elite核心库的加载方式及自动加载类库
    elite核心类库之事件类
    wamp速度缓慢的解决办法
    Dwzdialog中批量提交的问题处理
    PHP中缀表达式与逆波兰式的计算(用于工资项目等四则计算)
    PHP工资计算之逆波兰式
    elite核心类库之模板类
    PHP soap访问接口出错汇总及解决办法
  • 原文地址:https://www.cnblogs.com/YzpJason/p/7217068.html
Copyright © 2020-2023  润新知