动态表单的验证和获取值

来源:互联网 发布:淘宝裤子追加评价语 编辑:程序博客网 时间:2024/06/06 02:28

    在组织部项目中,有个动态表单的使用。根据不同的指标,显示不同的级别。如下图所示:

   

  这里也是很容易实现,红色框内就是选择不同指标后显示的不同级别票数,通过条件让一般处理程序查询级别,然后后台拼接成html,前台在ajax回调函数中将html插入到相应的DIV即可实现。如何验证这些文本框必须为数字呢?

  由于它的<input>的id值都是动态绑定数据库的id,前台根本不知道,我是name属性入手通过Jquery选择器实现。后台将文本框拼接的时候是这样的:

            for (int i = 0; i < dt.Rows.Count; i++)            {                strData.Append("<div class='fitem'><label>" + dt.Rows[i]["LevelId"].ToString() + "票数:" + "</label><input id='" + dt.Rows[i]["LevelId"].ToString() + "' name='dd" + dt.Rows[i]["Id"].ToString() + "' type='text'  class='easyui-datebox' style='margin-left:5px;width:125px;' maxlength='8'/> </div>");            }
  这里每个<input>的name值都是以"dd+ID值"组成,验证也需要从dd开始,匹配以dd开头的文本框来验证。

  JS代码为:

        var object = $("input[name^='dd']")     //匹配通配符,name为dd开头的        for (var i = 0; i < object.length; i++) {            var _input = object[i].value;            if (isNaN(_input)) {                alert('输入的票数必须为数字');                return;            }        }
  $("input[name^='dd']"),它的意思就是匹配<input>元素中以dd开头的name属性值,^就是以什么开头的意思。

  js中有个isNaN函数可以直接验证是否为数字,理解为:is not a number

  将这些值传入到一般处理程序的时候是如何获取值呢?

  一般处理程序中context.Request.Form[AllKeys]可以获取页面中有value属性的表单域,也就是控件值。

  

   foreach (string key in context.Request.Form.AllKeys)           {               if (key.StartsWith("dd"))                  {                      enCityCharacter.other2 = key.Replace("dd", "");  //获取各个级别id                      enCityCharacter.Votes = context.Request.Form[key]; //获取各个级别的票数                   }            }
  这里的key是控件的name值,key.StartsWith("dd")就是以dd开头的name值,正好取得上面拼接name的控件,而context.Request.Form[key]则是获取表单中该name的值。这样就得到了相对应的id与票数值。

  功能很简单,学问倒是很大,谁用谁知道。

  

0 0