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") %>' onblur="amountcheck(this)" Width="40"></asp:TextBox>
</EditItemTemplate>
//this参数传入了控件的对象,替代了通过控件ID获取控件对象这一步
  • 添加JS代码

 

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

 

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

 

 

 

posted @ 2010-06-02 22:20  xxfss2  阅读(1352)  评论(0编辑  收藏  举报