在使用easyui-combogrid时,由于html解析出的格式是如下三层:

<td>
<input id="txcombo" class="easyui-combogrid combogrid-f combo-f" value="" style="width: 200px; height: 28px; display: none;" comboname="tx">

<span class="combo" style="width: 198px; height: 26px;">

<input type="text" class="combo-text validatebox-text validatebox-invalid" autocomplete="off" readonly="readonly" title="" style="cursor: pointer; width: 176px; height: 26px; line-height: 26px;">

<span>

<span class="combo-arrow" style="height: 26px;">

</span>

</span>

<input type="hidden" class="combo-value" name="tx" value=""></span>

</td>

注意到最外层的display:none,所以直接在样式中添加required="required"是不起作用的娥,而真正提交的input却是hidden。

第一层是一个display:none的下拉数据表格框;

第二层是一个validate-box,验证框;

第三层是一个显示属性为hidden,隐藏的文本框。

选择一项下拉值后发现,第一层的value,值为空,第三层的文本框值却不为空。那么问题就出现在第一层,因为它自动解析了一个display:none,同时我又在页面添加了必填属性,required:true,但是它又没有拿到值,所以就是那个报错的原因:一个隐藏的必填项为空。

前台html代码是自动解析的,无法更改,也就意味着无法去掉display:none属性,那么只能去掉必填属性,required:true.但是需求中又明确要求必填,那么只能在js中试试,是否能够识别必填属性:

/*********下拉数据表格*******/
$('#tx').combogrid({
panelWidth: 700,
panelHeight:500,
idField: 'value',
textField: 'value',
url:'getTx.do',
method: 'post',
fit: false,
fitColumns: false,
required: true,
editable:false,
columns: [[
{field:'value',title:'value'},
{field:'note',title:'note',align:'left'}
]],

onLoadSuccess:function(){ //修改页加载表格数据
$('#tx').combogrid('setValue', '${dto.tx}');
}
}

});

测试发现,无论是否有值,都会提示必填。这说明必填属性起作用了,但是这个框没有拿到值。那么此时的隐藏项就只剩下最后一层了,那个type=”hidden”的文本框,这样问题就简单多了,在下拉框选中值之后,将下拉框的值手动赋给这个文本框:

/*********下拉数据表格*******/
$('#tx').combogrid({
panelWidth: 700,
panelHeight:500,
idField: 'value',
textField: 'value',
url:'getTx.do',
method: 'post',
fit: false,
fitColumns: false,
required: true,
editable:false,
columns: [[
{field:'value',title:'value'},
{field:'note',title:'note',align:'left'}
]],

onLoadSuccess:function(){ //修改页加载表格数据
$('#tx').combogrid('setValue', '${dto.tx}');
},

onClickRow:function(index,row){ 
$('#tx').val(row.value); //下拉数据表格的第一层的input框赋值,否则不能作为必填项提交
}
}

});

注意到此处的方法onClickRow:function(index,row)是数据表格的方法,那么easyui-combogrid继承自easyui-datagrid和easyui-combo,它同时也继承了datagrid和combo的方法,所以此处可以直接用。

easyui-combogrid必填为空时无法通过表单验证的问题的更多相关文章

  1. atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证

    atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表 ...

  2. atittit.表单验证性质的原则和实施,以及选择和定义自己的兼容easyui dsl窗体身份验证规则

    atittit.表单验证性质的原则和实施,以及选择和定义自己的兼容easyui dsl规则的表单验证 1. 需求,表单验证须要弹框式,但眼下easyui ms绑定死了tooltip式样 1 2. 表单 ...

  3. atitit.表单验证 的dsl 本质跟 easyui ligerui比较

    atitit.表单验证的dsl 本质跟 easyui ligerui比较 1. DSL 声明验证 1 2. 自定义规则 1 3. 正则表达式验证,可以扩展实现 2 4. 犯错误消息提示,generic ...

  4. ASP.NET MVC5+EF6+EasyUI 后台管理系统(33)-MVC 表单验证

    系列目录 注:本节阅读需要有MVC 自定义验证的基础,否则比较吃力 一直以来表单的验证都是不可或缺的,微软的东西还是做得比较人性化的,从webform到MVC,都做到了双向验证 单单的用js实现的前端 ...

  5. 仿照easy-ui并改进的表单验证

    概述 easy-ui有自身的一套表单验证,扩展方便,但默认下也存在一些弱点,比如多规则验证.后台验证.远程异步验证等,这些功能要解决起来是比较吃力的.我仿照它的样式,写了一套前端表单验证的validB ...

  6. AngularJS系列:表单全解(表单验证,radio必选,三级联动,check绑定,form提交验证)

    一.查看$scope -->寻找Form控制变量的位置 Form控制变量 格式:form的name属性.input的name属性.$... formName.inputField.$pristi ...

  7. PHP表单验证内容是否为空

    内容为空效果图为: 填写内容效果图: 下面是验证程序的代码: <!doctype html> <html> <head> <meta http-equiv=& ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统(44)-工作流设计-设计表单

    系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四步. 开始之前先说说表的结构. 其实表Flow_Form与Flow_FormContent设计是有一个缺陷的.我总共是设置最 ...

  9. 扩展easyui 的表单验证 (转)

    From:http://www.cnblogs.com/gengaixue/archive/2012/07/14/2591054.html easyui 的validatebox()提供了自定义验证的 ...

随机推荐

  1. JSP的使用

    JSP全称为(Java server page),之所以出现JSP,最主要的目的是抽离出Servlet中输出HTML的部分,由于之前响应客户端的时候,是直接在Servlet中利用response.ge ...

  2. Spring+Hibernateh使用小结

    由此我们可以看出,报出错误的地方主要是slf4j的jar包,而故障码中“Failed to load class ’org.slf4j.impl.StaticLoggerBinder‘”的意思则是“加 ...

  3. JS案例练习:图片切换+切换模式

    先附图: CSS样式部分: <style> *{;} body{font-family:'Microsoft YaHei';} .menu{margin:20px auto 0; widt ...

  4. nbtscan ip地址

    查找网络(192.168.1.0)中netbios名字信息,对应命令如下: nbtscan 192.168.1.1-254 找到有netbios名字后,可以使用如下的命令查看这些主机运行的服务. nb ...

  5. Neo4j-3.0.3 (Debian 8)

    平台: Ubuntu 类型: 虚拟机镜像 软件包: neo4j-3.0.3 basic software database graph database infrastructure neo4j op ...

  6. Python参数基础

    Python参数基础 位置参数 ​ 通过位置进行匹配,把参数值传递给函数头部的参数名称,顺序从左到右 关键字参数 ​ 调用的时候使用参数的变量名,采用name=value的形式 默认参数 ​ 为没有传 ...

  7. 【mydigitallife.info】如何禁用Aero窗口自动最大化

    Go to Control Panel. Click on Ease of Access link or Ease of Access Center icon. Select Change how y ...

  8. World Wind Java开发之二 使用Winbuilders设计图形用户界面(转)

    http://blog.csdn.net/giser_whu/article/details/40892955 在eclipse中使用WindowsBuildes可以像在VS中一样,拖拽用户图形界面. ...

  9. 《坐热板凳》第九次团队作业:Beta冲刺与验收准备(第一天)

    <坐热板凳>第九次团队作业:Beta冲刺与验收准备 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https ...

  10. PAT (Advanced Level) Practise - 1092. To Buy or Not to Buy (20)

    http://www.patest.cn/contests/pat-a-practise/1092 Eva would like to make a string of beads with her ...