=波波日志 > JavaScript/Ajax > 检查textarea每行的内容是否符合要求=

检查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> 
类别:JavaScript/Ajax 作者:波波 日期:2010-05-31 【评论:0】 
 
暂时没有评论!
发表留言
  • *昵称:
  • 头像:
  • 电子邮件: [留下您的邮件,方便管理员回复您。]
  • 个人网站: *验证码:
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,©2012WEB编程网桂ICP备05005887号 京公网安备1101055090