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;

 

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