easyui 动态修改表单组件的required必填属性
因为大部分表单组件都是直接或间接依赖基础组件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');
直接替换代码重新解析最省事;
上一篇:Html5实现下拉菜单
下一篇:CSS 定位详解