easyui-combogrid必填为空时无法通过表单验证的问题

在使用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的方法,所以此处可以直接用。

时间: 2024-08-01 09:10:36

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

iview DatePicker type 为dateTime 时无法做表单验证!

在做修改数据的对话框中表单校验时,日期时间验证不了小图标一直在打转,因为我后台获取到的数据(是字符串的格式),应该将获取到的字符串格式的数据放到new Data()中(转为标准时间格式),就可以通过验证了,也可以正常提交表单了. <FormItem prop="beginDate"> <DatePicker type="datetime" v-model="formValidate.beginDate" placeholder=

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

atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表单验证表现形式 1 2.1. 弹框 1 2.2. 浮动tooltip,推荐这个 1 3. 表单验证的实现原理 1 3.1. 定义reg 2 3.2. 解释 2 3.3. 调用提示... 2 4. 表单验证框架选型easyui>ligerui 2 4.1. ligerui的表单验证选型... 2 4.

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

atittit.表单验证性质的原则和实施,以及选择和定义自己的兼容easyui dsl规则的表单验证 1. 需求,表单验证须要弹框式,但眼下easyui ms绑定死了tooltip式样 1 2. 表单验证表现形式 1 2.1. 弹框 1 2.2. 浮动tooltip.推荐这个 1 3. 表单验证的实现原理 1 3.1. 定义reg 2 3.2. 解释 2 3.3. 调用提示. .. 2 4. 表单验证框架选型easyui>ligerui 2 4.1. ligerui的表单验证选型. .. 2 4

表单验证必填项

在表单验证中,会有一些必填项,如手机号,密码,昵称,验证码等,如果某项为空,或格式不正确表单将无法提交.在此我只做了手机号和密码的验证,其他的与此类此 html代码: <form action="" onsubmit="return check_sub()"> <p class="tel"> <label for="tel">手机</label> <input type=&

php基础教程——表单验证(必填、提交后数据保留)

一.表单验证中用到的几个元素记录 1.htmlspecialchars(),用于将用户输入的特殊字符转义为普通字符,比如 < 和 > 之类的 HTML 字符会被替换为 < 和 > 2.$_SERVER["PHP_SELF"] 是一种超全局变量,返回当前页面脚本名字 3.trim()用于删除多余的空格等 4.stripslashes()用于删除用户多输入的反斜线 二.一个简单的表单验证函数 function test_input($str){ $str = tri

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

atitit.表单验证的dsl 本质跟 easyui ligerui比较 1. DSL 声明验证 1 2. 自定义规则 1 3. 正则表达式验证,可以扩展实现 2 4. 犯错误消息提示,generic canBeEmpty is good 3 5. Prevent the form to submit when invalid 3 6. 为空则不验证,不为空则验证,的实现 5 7. 参考 6 1. DSL 声明验证 <input class="easyui-validatebox"

表单验证如何定位到未填的选项

我们在做数据提交的时候经常用到表单验证,如果遇到表单元素有没填的选项,一般都会禁止表单提交 如果表单需要验证的数据比较多,有些必填的字段为空 提交不了 但是没有定位到未填项的位置  导致用户懵逼  不知道为什么提交不了 这个时候,我们可以给未填的表单项加foucs() 例如上图的代码,这样光标就可以定位到未填项 原文地址:https://www.cnblogs.com/leileilei/p/8921480.html

扩展easyui 的表单验证 (转)

From:http://www.cnblogs.com/gengaixue/archive/2012/07/14/2591054.html easyui 的validatebox()提供了自定义验证的方法,为此我把一些常用的数据验证汇总了一下,代码如下: $.extend($.fn.validatebox.defaults.rules, { CHS: { validator: function (value, param) { return /^[\u0391-\uFFE5]+$/.test(v

表单验证之非空验证

<body> //表单元素 <input type="text" id="uid" /> </body> <script type="text/javascript"> //获取元素 var txt = document.getElementById("uid"); //元素上焦点离开执行操作 txt.onblur = function(){ //判断元素的value是否为空 i