检查textarea每行的内容是否符合要求

CSDN看到的的问题,描述如下  
  现在的情况是这样。JSP一个多行文本输入框。用户可以在上面输入电话号码,最少为一个,暂时没有上限,现在遇到一个问题,当用户输入的电话号码大于10个的时候(这里为了测试方便,所以只输入10个,实际情况不会少于1W个),当这些电话号码当于有一个或多个出错(如:电话号码长度不是11位,电话号码其中包含了英文),服务端(Action)会拒绝提交,我想做的是,提醒用户出错电话号码的位置在哪里,方便用户修改,请问各位高手应该怎么做。

下面是解决方案,不过每次只定位选择一行输入错误的行。代码如下
+展开
-HTML
<textarea id="ta" rows="20" cols="40">
11111111111
1111111111
11111111111
11111111111
11111111111
111111111a1
11111111b11
22</textarea>


<input type="button" onclick="ck()" value="提交" />
<script>
var isIE=!!document.all;
function ck(){
  var ta=document.getElementById('ta'),arr=ta.value.split(/[\r\n]/)
   ,rx=/^\d{11}$///要验证行数据是否正确的正则表达式,当然也可以在下面的if语句里面判断下
   ,findErr=false;
  ta.focus();
  for(var i=0;i<arr.length;i++)
   if(arr[i]!=''&&!rx.test(arr[i])){//行内容不为空并且填写内容不符合规格时
      //========FireFox设置这两个参数就可以选择内容了
      ta.selectionStart=i*12;
      ta.selectionEnd=ta.selectionStart+arr[i].length;
      //===========如果是IE得使用createTextRange
     if(isIE){
      var rng=ta.createTextRange();
      //将开始点和结束点在容器起始位置重合
     rng.moveStart("character",-ta.value.length);
     rng.moveEnd("character",-ta.value.length);
     rng.collapse(true); 
      rng.moveStart('character',ta.selectionStart);
      rng.moveEnd('character',arr[i].length);
      rng.select();
     }
     findErr=true;break;
  }
  if(findErr)alert('高亮地方电话号码输入有错误!');
  else alert('验证成功!~~~');
}
</script> 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:检查textarea每行的内容是否符合要求

评论(0)Web开发网
阅读(189)喜欢(0)JavaScript/Ajax开发技巧