JS初体验——GridView中的数据验证

今天碰到了一个新的问题:在GridView的编辑状态下,如何对单元格内修改后的数据进行验证?

 

首先贴上一个在论坛上淘的正则:

  
  
function Check(a) {
var re = / ^([1-9][0-9]*|0)(\.[0-9]+)?$ / ;
return re.exec(a) != null ;
}
//这个正则验证的字符串为:纯数字,一个小数点,非0开头,非空。

 

GridView控件中的数据验证难在单元格内的控件ID是页面生成后产生的,虽然也可以通过控件所在的行列序号来获取ID,但对我这个菜鸟来说还是有点复杂。

怎么办呢,一番思索,我想到了也许可以在this参数上做文章,于是我在GOOGLE查询JS中this参数的用法。结果在第一个搜索结果中就得到了下面这句话

 

在JavaScript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)。

  

后半句提醒了我,我马上有了思路。

做法如下:

  • 将GRIDVIEW中需要在修改时验证的列改为模板列。
  • 在前端代码中修改模板列中的控件属性

  

  
  
< EditItemTemplate >
< asp:TextBox ID ="TextBox1" runat ="server" Text ='<%# Bind("Amount") % > ' οnblur="amountcheck(this)" Width="40"> </ asp:TextBox >
</ EditItemTemplate >
//this参数传入了控件的对象,替代了通过控件ID获取控件对象这一步
  • 添加JS代码

 

  
  
function amountcheck(tb) {
if ( ! Check(tb.value)) {
alert(
" 请输入正确的数量! " );
tb.focus();
}
}

 

好了,现在GridView中的单元格在失去焦点时,就会触发验证,并且在用户没有输入符合要求的值之前,这将是一个死循环(有点霸道,不是好的处理方式)。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值