jqgrid 中textarea使用回車鍵,表格高度自適應
阿新 • • 發佈:2018-12-17
應專案需求實現jqgrid中表格為textarea時高度自適應
在jqgrid中 編輯狀態時的表格 為input,textarea,select時回車事件將觸發單元格儲存"saveCell";
原始碼:
1.在原始碼中搜索"textarea"找到到這段程式碼,將$("input, select, textarea",cc)中的textarea去掉(個人方法,請參考使用,將不再觸發textarea的回車儲存!):
$("input, select, textarea",cc).bind("keydown",function(e) { if (e.keyCode === 27) { if($("input.hasDatepicker",cc).length >0) { if( $(".ui-datepicker").is(":hidden") ) { $($t).jqGrid("restoreCell",iRow,iCol); }else { $("input.hasDatepicker",cc).datepicker('hide'); } } else { $($t).jqGrid("restoreCell",iRow,iCol); } } //ESC if (e.keyCode === 13) { $($t).jqGrid("saveCell",iRow,iCol); // Prevent default action return false; } //Enter if (e.keyCode === 9) { if(!$t.grid.hDiv.loading ) { if (e.shiftKey) {$($t).jqGrid("prevCell",iRow,iCol);} //ShiftTAb else {$($t).jqGrid("nextCell",iRow,iCol);} //Tab } else { return false; } } e.stopPropagation(); });
2.通過"textarea"搜尋找到此段程式碼(textarea回車高度自適應解決方法):
case "textarea" : elem = document.createElement("textarea"); if(autowidth) { if(!options.cols) { $(elem).css({width:"98%"});} } else if (!options.cols) { options.cols = 20; } if(!options.rows) { options.rows = 2; } if(vl===' ' || vl===' ' || (vl.length===1 && vl.charCodeAt(0)===160)){vl="";} elem.value = vl; setAttributes(elem, options); $(elem).attr({"role":"textbox","multiline":"true"}); break;
在此處$(elem).attr({"role":"textbox","multiline":"true"});通過新增"onkeyup"來實現,
$(elem).attr({"role":"textbox","multiline":"true","onkeyup":"adaption(this)"});
函式:adaption 自定義函式,可根據需要是否放入原始碼。
function adaption(dom){
var val = dom.value;
$(dom).height(val.split('\n').length * 20);
};
以上兩點已經實現jqgrid在textarea狀態回車撐起自身高度,但還需新增一句(在第2點原始碼elem.value = vl後新增):
$(elem).height(elem.value.split('\n').length * 20);
完結!
小打小鬧,歡迎指正!