1. 程式人生 > >jqgrid 中textarea使用回車鍵,表格高度自適應

jqgrid 中textarea使用回車鍵,表格高度自適應

應專案需求實現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);

完結!

小打小鬧,歡迎指正!