jQuery EasyUI 1.3.6 form中的對於combogrid不起作用的問題修正

在此版本的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");

然後在自己的網頁上可以:

  1. 如果原始的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',
    
    
  2. 如果原始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);
}


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