jquery IP扩展

/* ip */    

$.fn.extend({
	toIpInput: function(){
	    return $(this).each(function(i){
	    	var prefix = parseInt(Math.random() * 10000);
	    	var ip = $(this).val();
	    	var name = $(this).attr('name');
	    	var attr_str = "";
	    	var disabled = this.disabled ? 'disabled' : '';
	    	if($(this).attr('key'))
	    	{
	    		attr_str += "key=" + $(this).attr('key');
	    	}
	    	
	    	ip1 = "";
	    	ip2 = "";
	    	ip3 = "";
	    	ip4 = "";
	    	if(!$.trim(ip) == '')
	    	{
	            var index = 0;
	            ip_arr = ip.split(".");   
	            ip1 = ip_arr[0] || '';
	            ip2 = ip_arr[1] || '';
	            ip3 = ip_arr[2] || '';
	            ip4 = ip_arr[3] || '';
	    	}
	    	
	    	var _o = $(this).clone().get(0);
	    	
	    	var p = $(this).parent().eq(0);
	    	$(this).after(_o);
	    	$(this).after("<input type='text' class='" +($(this).hasClass('bLeftRequire') ? 'bLeftRequire' : '')+ "' style='width:38px;height:21px; ime-mode:disabled;' value='" + ip1 + "' name='"+prefix+"__ip'  " +disabled+ "/>.<input type='text' style='width:38px;height:21px;ime-mode: disabled; ' value='" + ip2 + "' name='"+prefix+"__ip' " +disabled+ "/>.<input type='text' style='width:38px;height:21px;ime-mode: disabled;' value='" + ip3 + "' name='"+prefix+"__ip' " +disabled+ "/>.<input type='text'  style='width:38px;height:21px;ime-mode: disabled;' value='" + ip4 + "' name='"+prefix+"__ip' " +disabled+ "/>");
	    	
	    	for(var i in this)
    		{
    			if( (typeof this[i] == 'string' || typeof this[i] == 'function' ) && typeof _o[i] == 'undefined')
    			{
    				_o[i] = this[i];
    			}
    		}
	    	$(this).remove();
	    	
	    	$(_o).hide().focus(function(){
	    		$(_o).prevAll('input').last().focus();
	    	})

	    	$("input[name='"+prefix+"__ip']").keydown(function(a, e){ 
    	        e = e || window.event || a; 
    	        
    	        if(e.keyCode == 8 && $.trim(this.value) == '')
    	        {
    	        	//Backspace
    	        	var prev = $(this).prev();
    	        	var v = prev.val();
    	        	prev.val('');
    	            prev.focus().val(v);
    	        }
    	        setRealVal();  
    	    }).keyup(function(event){
    	    	setIp.call(this, event);
    	    }).blur(function(){
    	        if(this.value.length >= 3)
    	        {
    	            var vv = this.value.substr(0, 3);
    	            if(parseInt(vv) > 255)
    	            {
    	                vv = 255;
    	            }
    	            this.value = isNaN(parseInt(vv)) ? 0 : parseInt(vv);                                        
    	        }  
    	        setRealVal();  
	    	});
	    	function setIp(e){     
	    	    var v = this.value; 
	    	    if(e.keyCode == 190 || e.keyCode == 110) //按下 '.' 键
	    	    {
	    	        $(this).next().focus();
	    	        $(this).next().val($(this).next().val());
	    	        var val = isNaN(parseInt(v)) ? 0 : parseInt(v);
	    	        val = val < 0 ? -val : val;
		    	    this.value = val;
	    	    }
	    	    else if(v.length > 3)
	    	    {
	    	        var vv = v.substr(0, 3);
	    	        if(parseInt(vv) > 255)
	    	        {
	    	            vv = 255;
	    	        }  
	    	        $(this).next().focus().val(v.substr(3));
	    	        var val = isNaN(parseInt(vv)) ? 0 : parseInt(vv);  
	    	        val = val < 0 ? -val : val;
		    	    this.value = val;
	    	    }
	    	    
	    	    setRealVal();     
	    	}
	    	//对隐藏的input进行赋值
	    	function setRealVal()
	    	{
	    	    var v = "";          
	    	    $("input[name='"+prefix+"__ip']").each(function(){
	    	    	if(this.value != "")
	    	    	{
	    	    		v += "." + this.value;
	    	    	}
	    	        $("input[name='"+name+"']").val(v.substr(1));
	    	    }); 
	    	}
	    });
	}
});
//使用方式 JQuery(o).toIpInput();

你可能感兴趣的:(jquery,IP,扩展,plugin)