easyui 动态修改表单组件的required必填属性

easyui 动态修改表单组件的required必填属性

技术教程gslnedu2025-05-22 10:57:343A+A-

因为大部分表单组件都是直接或间接依赖基础组件validatebox验证框,我用继承来形容。一般继承父级的子级是可以调用父级的方法使用父级的属性的,有的可以直接调用,有的是需要借助自己的方法层层调用;

例如继承了combo(自定义下拉框)的combobox(下拉框列表),可以直接使用combo的multiple多选属性,我通常会会把combobox伪装成textbox,只为了使用combobox的onChange事件,textbox的onChange只有光标离开才会触发,而combobox输入值发生变化就能触发onChange事件;而伪装的属性就来自于combo

<input data-toggle="topjui-combobox" name="q"
data-options="width:150,prompt:'材料名、简拼',data:[],editable:true,hasDownArrow:false,panelHeight:0,onChange:modelGoodsChangePage,">

用到了editable:可输入文本,hasDownArrow:隐藏箭头按钮,panelHeight:下拉面板高度为0;

如果是textbox动态修改required

$("#id").iTextbox('options').required = true;

实际是值虽然被改了,但是没有效果,猜测是需要重新渲染

$.parser.parse('#id'); // 解析指定节点

还是没有效果,

$("#id").iTextbox('textbox').iValidatebox('enableValidation');

这个是有效果了,直接调用了validatebox的启用和禁用方法;

如果是combobox:

$("#id").iCombobox('textbox').iValidatebox('disableValidation');

但是后来使用发现,只有在初始化时required=true,后面动态修改才有效果,可能是为初始化为true验证模块才能加载,后面才能修改,而为false,验证模块就没有,修改就没效果;

还有简单的方法就是在表单组件外面套上div,

$("#divId").html('新的表单组件')

$.parser.parse('#divId');

直接替换代码重新解析最省事;

点击这里复制本文地址 以上内容由朽木教程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

朽木教程网 © All Rights Reserved.  蜀ICP备2024111239号-8