js遇到过的问题

来源:互联网 发布:mac os xmanager 编辑:程序博客网 时间:2024/05/16 16:55

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" onclick=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" onclick=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>

注:以上代码均来自网络






0 0
原创粉丝点击