动态表单的验证和获取值

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

   

  这里也是很容易实现,红色框内就是选择不同指标后显示的不同级别票数,通过条件让一般处理程序查询级别,然后后台拼接成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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值