js遇到过的问题

1)用js规定输入框只能填写大写字母或是数字

示例:

<script type="text/javascript">
	var re=/^[A-Z0-9]*$/;
	var str = '';
	function pCodeChange(obj){
		if(re.test(obj.value) == false){
			obj.value = str;
			alert("只能填数字或大写字母");
		} else {
			str = obj.value;
		}
	}
</script>

<p>
<label>运行号:</label>
<input type="text" id="provisioningCode" name="provisioningcode" value="${deviceInfoView.provisioningcode}" class="request"  maxlength="64" onpropertychange="pCodeChange(this)"/>
</p>

其中onpropertychange事件,顾名思义,就是property(属性)change(改变)的时候出发该事件。这是ie专有的,如果想兼容其他浏览器,有一个类似的事件oninput。

onpropertychange事件会在设置disable=true的时候失效,而且,触发对象的任何属性改变时onpropertychange事件都会被触发。

oninput只是触发对象的value改变时才会被触发。

oninput的短板:如果触发对象的value值通过js代码改变时,oninput事件不会被触发,还有就是在下拉列表框中改变value值时不会被触发。


关于onchange事件:

它有两个弊端:

一:只有在触发对象失去焦点的时候才会触发该事件

二:如果得用javascript改变触发对象的属性时,并不能触发onchange事件,oninput事件也有这个问题。


2)ipv4以及ipv6格式的地址格式校验

a)js方式的ipv4地址格式校验

function queryDev(ip){  
var exp=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;  
var flag = ip.match(exp);  
if(flag != undefined && flag!=""){  
   return true;  
} else {  
  return false;  
}  
}  
<input type="text" name="iporname" id="iporname" style="width:80px;" value="" />    
<input name="Submit" type="button"  value="验证IPV4" οnclick=alert(queryDev(iporname.value)) style="width:80px"/>

b)js方式的ipv6地址格式校验

function queryDev(ipvalue){  
var isIpv6 = false;  
if(ipvalue.match(/:/g).length<=7&&/::/.test(ipvalue)?/^([\da-f]{1,4}(:|::)){1,6}[\da-f]{1,4}$/i.test(ipvalue):/^([\da-f]{1,4}:){7}[\da-f]{1,4}$/i.test(ipvalue)){  
    isIpv6 = true;  
}  
if(isIpv6){  
return true;  
} else {  
return false;  
}  
}  
<input type="text" name="iporname" id="iporname" style="width:80px;" value="" />    
<input name="Submit" type="button"  value="验证IPV6" οnclick=alert(queryDev(iporname.value)) style="width:80px"/>

c)java方式校验ipv4与ipv6地址格式

public static boolean validata_ipv6(String host){  
InetAddress addressIpv6 = null;  
Inet6Address IPv6 = null;  
Inet4Address Ipv4 = null;  
try {  
   addressIpv6 = InetAddress.getByName(host);  
 } catch (UnknownHostException e) {    
     e.printStackTrace();return false;  
}  
   if(addressIpv6 instanceof Inet6Address){  
    IPv6 = (Inet6Address) addressIpv6;  
    return true;  
   }   
  if (addressIpv6 instanceof Inet4Address)  
    {return false;}  
  return true;  
}  
IPV4:  
/***  
*@param ip 
* @return 
*/  
public static boolean validata_ipv4(String host){  
   InetAddress addressIpv4 = null;  
   Inet6Address IPv6 = null;  
   Inet4Address Ipv4 = null;  
   try {  
    addressIpv4 = InetAddress.getByName(host);   
   } catch (UnknownHostException e) {   
       e.printStackTrace();  
    return false;  
    }  
if(addressIpv4 instanceof Inet6Address){  
    IPv6 = (Inet6Address) addressIpv4;  
    return false;  
  }  
 if(addressIpv4 instanceof Inet4Address){  
  IPv4 = (Inet4Address) addressIpv4;  
   return true;}  
 return true;  
}  


3)翻页保存选中的id

<script type="text/javascript">
	checkedIds="";//翻页保存选中的id
     
      	function changeIds(){
      	     var oneches=document.getElementsByName("checkbox");
		     for(var i=0;i<oneches.length;i++){
			 	if(oneches[i].checked==true){
			 		//避免重复累计id (不含该id时进行累加)
			 		if(checkedIds.indexOf(oneches[i].value)==-1){
			 			checkedIds=checkedIds+oneches[i].value+",";
			 		}
			 	}
			 	if(oneches[i].checked==false){
			 		//取消复选框时 含有该id时将id从全局变量中去除
			 		if(checkedIds.indexOf(oneches[i].value)!=-1){
			 			checkedIds=checkedIds.replace((oneches[i].value+","),"");
			 		}
			 	}
			 }
      	}
	
	function getChecked(){
      	 	 var oneches=document.getElementsByName("checkbox");
		     for(var i=0;i<oneches.length;i++){
		     		//全局变量中含有id,则该复选框选中
			 		if(checkedIds.indexOf(oneches[i].value)!=-1){
			 			oneches[i].checked=true;
			 		}
			 	}
      	}

</script>

注:以上代码均来自网络






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值