在此版本的easy ui中,當使用如下的代碼創建有標籤的combogrid時,沒有通常的點擊標籤後焦點直接到輸入框中的效果:
<td style="text-align:right"><label for="newUsr_DefaultProject">默認項目</label></td>
<td >
<input id='newUsr_DefaultProject' name="DefaultProject"
class="easyui-combogrid" data-options="
editable:true,
validType:'XXX',
......
對此,我對easyui的源碼做了一些修正:
找到easyui-min.js的11015行,原來附近的代碼大概是這個樣子的:
$(_847).addClass("combo-f").hide();
var span=$("<span class=\"combo\">"+"<input type=\"text\" class=\"combo-text\" autocomplete=\"off\">"+"<span><span class=\"combo-arrow\"></span></span>"+"<input type=\"hidden\" class=\"combo-value\">"+"</span>").insertAfter(_847);
var _848=$("<div class=\"combo-panel\"></div>").appendTo("body");
現在在$(_847).addClass("combo-f").hide();
下面插入獲取id的代碼,並把id傳到input中,即修改成:
$(_847).addClass("combo-f").hide();
var id = $(_847).data();
$.each(id, function (i, e) {
id = e;
return false;
});
id = id.options && id.options.id ? ("id='" + id.options.id + "'") : "";
var span=$("<span class=\"combo\">"+"<input type=\"text\" "+id+" class=\"combo-text\" autocomplete=\"off\">"+"<span><span class=\"combo-arrow\"></span></span>"+"<input type=\"hidden\" class=\"combo-value\">"+"</span>").insertAfter(_847);
var _848=$("<div class=\"combo-panel\"></div>").appendTo("body");
然後在自己的網頁上可以:
- 如果原始的input不需要id:則把原始input的id直接放入"data-options“屬性中,即把一開始的那段代碼改成:
<td style="text-align:right"><label for="newUsr_DefaultProject">默認項目</label></td> <td > <input name="DefaultProject" class="easyui-combogrid" data-options=" id:'newUsr_DefaultProject', editable:true, validType:'XXX',
- 如果原始input需要id,則保留原id,然後在data-options加入一個新的id
最後效果如圖:
補充:
:如果是jQuery EasyUI 1.4,則需要把6016附近的代碼從:
var tb=_459.textbox;
tb.find(".textbox-text").remove();
if(opts.multiline){
$("<textarea class=\"textbox-text\" " autocomplete=\"off\"></textarea>").prependTo(tb);
}else{
$("<input type=\"" + opts.type + "\" class=\"textbox-text\" autocomplete=\"off\">").prependTo(tb);
}
改成:
var tb=_459.textbox;
tb.find(".textbox-text").remove();
var id = opts.id ? "id='" + opts.id + "'" : "";
if(opts.multiline){
$("<textarea class=\"textbox-text\" " + id + " autocomplete=\"off\"></textarea>").prependTo(tb);
}else{
$("<input type=\"" + opts.type + "\" " + id + " class=\"textbox-text\" autocomplete=\"off\">").prependTo(tb);
}