easyui动态修改combobox的required

经常使用easyui,对于基本的使用还算了解,经常有这样的需要,需要动态的修改required,也就是在某些情况下required是true,有些情况下required是false,之前使用的方法主要有两种:

一种是构造函数方法,重新构造一个

$("#" +id).combobox({required:false});
$("#" +id).combobox({required:true});


后来发现这种在一些很奇怪的情况下会出现一些很奇怪的现象,比如combobox已经加载数据,如果使用{}再初始化一遍,会重新发送url,再次加载数据

第二种就是复制属性,再重新构造

//取原组件属性
var _options = $("#" +id).combobox("options");
//设置必填
options.required = isRequired;

这样也是有问题的,因为combobox已经渲染完成,只是修改options的required属性,其关联依赖的对象的属性还是原本的属性,最直接的问题是,原本的required为true,那么在form表单的submit的时候会验证combobx的值;动态修改为false之后,form提交的时候还是会验证该下拉框,即主动设置options.required = isRequired;是不可以的

于是没有办法只能在网上找答案,但大部分都是人云亦云,没有经过大量测试。

后来终于在官网论坛上到找了相关回复

function iCheckChange(aChecked){
  $('#iCombo').combobox(aChecked?'enable':'disable');//禁用或者启用
  $('#iCombo').combobox('options').required = aChecked;//动态需改required属性
  $('#iCombo').combobox('textbox').validatebox('options').required = aChecked;//修改关联对象属性
  $('#iCombo').combobox('validate');//重新验证
};


经过测试是可用的

下拉框

$("#" +id).combobox('options').required = isRequired;
$("#" +id).combobox('textbox').validatebox('options').required = isRequired;
$("#" +id).combobox('validate');


日期

$("#" +id).datebox('options').required = isRequired;
$("#" +id).datebox('textbox').validatebox('options').required = isRequired;
$("#" +id).datebox('validate');


单行输入

$("#" +id).validatebox('options').required = isRequired;
$("#" +id).validatebox('validate');


时间输入

$("#" +id).timespinner('options').required = isRequired;
$("#" +id).timespinner().validatebox('options').required = isRequired;
$("#" +id).timespinner('validate');


数值输入

$("#" +id).numberbox('options').required = isRequired;
$("#" +id).numberbox().validatebox('options').required = isRequired;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章