经常使用easyui,对于基本的使用还算了解,经常有这样的需要,需要动态的修改required,也就是在某些情况下required是true,有些情况下required是false,之前使用的方法主要有两种:
一种是构造函数方法,重新构造一个
$("#" +id).combobox({required:false});
$("#" +id).combobox({required:true});
后来发现这种在一些很奇怪的情况下会出现一些很奇怪的现象,当然发生的概率比较低,具体原因不明
第二种就是复制属性,再重新构造
///取原组件属性
var _options = $("#" +id).combobox("options");
//设置必填
_options.required = isRequired;
//重新渲染组件
$("#" +id).combobox(_options);
但在测试时也会发生很奇怪的现象,例如,导致对象的options的部分属性丢失
于是没有办法只能在网上找答案,但大部分都是人云亦云,没有经过大量测试。
后来终于在官网论坛上到找了相关回复
function iCheckChange(aChecked){
$('#iCombo').combobox(aChecked?'enable':'disable');
$('#iCombo').combobox('options').required = aChecked;
$('#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;
$("#" +id).numberbox('validate');
dynamically change option 'required'
switch on and off combobox required [Solved]
change value Max in data-options="max : 3"; in numberbox during onchange event