easyui使用易错点

一、easyui报错:form[0].submit is not a function

        使用easyui提交表单的时候报错:easyui报错:form[0].submit is not a function。

原因:

easyui表单提交可以提交文件和普通字段,相当于jquery-from.js了,当然了,要想提交文件,设置form标签的enctype="multipart/form-data"是前提,但是使用easyui提交表单的时候却报了如上的错误,检查了该设置的都设置了,最后发现原因是触发提交的按钮的id或者nane写成了submit,改成其它任意名字就行了,但是就是不能叫做"submit"。

原先错误的写法:

<a href="#" id="submit"  class="easyui-linkbutton" data-options="iconCls:'icon-ok'" >提交</a>

这里我修改为:

<a href="#" id="toAdd_submit"  class="easyui-linkbutton" data-options="iconCls:'icon-ok'" >提交</a>

就可以了。

使用jquery-easyui提交表单示例:

$("#toAdd_submit").click(function(){//提交操作
		$("#toAdd_comm_thumbpic_file").val("");
		$('#toAdd_form').form({    
		    url:'trueAddContnet',   
		    onSubmit:function(param){
		    	if(!$("#toAdd_comm_title").val()){
		    		$.messager.alert('错误','标题必填!','error');
		    		return false;
		    	}
		    	$.messager.progress({msg:"正在提交....",title:"请稍等"});
		    },
		    success:function(data){    
		    	$.messager.progress("close");
		    	data=$.parseJSON(data);
		    	if(data.status=="success"){
		        	$.messager.alert('提示',data.info,'info');
		        	var tab = $('#centerArea').tabs('getSelected');  // 获取选择的面板
		        	tab.panel('refresh');
		        }else{
		        	$.messager.alert('错误',"添加文档出错",'error');
		        }
		    }    
		});    
		$('#toAdd_form').submit();  
	});

 

二、easyui几个笔记重点easyui加载html片段

$('#centerArea').tabs("add",{
    title:opts.txt,
    narrow:true,
    closable:true,
    method:opts.method,
    content:"<iframe   frameborder=0 scrolling='auto' width='100%'  height='99%' src='toMakeIndex'></iframe>"
});

easyui使用content加载tab选项卡的时候可以写iframe,那么src引用的地址toMakeIndex如下

@RequestMapping("/toMakeIndex")
	public String toMakeIndex(){
		return "static/toMakeIndex";
	}

即toMakeIndex这个方法返回的toMakeIndex.jsp包含完整的html结构,而如果写成下面的方式:

	$('#centerArea').tabs("add",{
				title:txt,
				narrow:true,
				closable:true,
				method:opts.method,
				queryParams:opts.queryParams,
				href:toMakeIndex
			});

那么此时toMakeIndex.jsp只能是html片段,所谓html片段就是不能包含html,body这些标签,因为这个html片段是被放入到其他页面中的,如果再有html,body等标识该页面时完整html结构的标签的话,就会导致页面错乱,js脚本不执行等奇怪现象。这两种方式各有千秋,看自己怎么个需求了。

eayui的tabs选项卡组件通过href引入html片段的不足:

通过iframe的方式不必担心页面的html元素的id是什么,随便起都可以,而通过href的方式加载html片段的方式需要注意toMakeIndex.jsp(被引入的页面)和引入toMakeIndex.jsp的页面里面的html元素的id不能重复,一不小心就出错了,还要注意css冲突的问题,引入页面和被引入页面可能出现css覆盖的问题。

eayui的tabs选项卡组件通过href引入html片段的优点:

css、js这些静态资源只需要在引入页面引入就可以了,这里还拿toMakeIndex.jsp作为被引入的页面,他只是作为引入toMakeIndex.jsp页面的一部分html结构而存在,当然可以使用原有页面的css和js了,而iframe则需要单独引入需要的css和js,加载起来可能会慢点。

6.$("#layout").layout("panel","center").panel({

onResize:function(width, height){

$("#centerArea").tabs("resize","auto");

}

});内容区域自适应大小

7.$("#contentManage_chanenl_id").combobox({    //模型下拉框

    onl oadSuccess:function(){

    $("#contentManage_chanenl_id").combobox("select","---所有---");

    },

});  改为使用

$("#contentManage_chanenl_id").combobox({    //模型下拉框

    value:"all"//all是---所有---对应的id值,这样就避免了加载出来页面没操作下拉框时通过$("#contentManage_chanenl_id").combobox("getValue")

    //取到的值是“---所有---”而不是其对应的id的情况出现,也不用再在后边进行data["contentManage_chanenl_id"]=$("#contentManage_chanenl_id").combobox("getValue")=="---所有---"?"all":$("#contentManage_chanenl_id").combobox("getValue");

    //等复杂判断了

});  

 

三、easyui tabs右键菜单关闭

        需求:如何实现easyui  tabs的如下效果?

easyui使用易错点

01.首先需要给tabs组件添加onContextMenu事件

$("#centerArea").tabs({
			border:false,
			fit:true,
			onContextMenu: function(e, title, index){
				  e.preventDefault();
				  $('#closeCxt').menu('show', {
		                 left: e.pageX,
		                 top: e.pageY
		          });
			}
		});

id为closeCxt的元素是上下文菜单:

   <div id="closeCxt" class="easyui-menu" >
	  <div id="closeCxt_crt" data-options="iconCls:'icon_cancle'" >关闭当前</div>
      <div id="closeCxt_all" data-options="iconCls:'icon_cross'" >关闭全部</div>
      <div id="closeCxt_other" data-options="iconCls:'icon_no'">关闭其他</div>
   </div>

我们定义菜单的点击事件,实现关闭逻辑即可:

	 $("#closeCxt").menu({
             onClick : function (item) {
                 closeTab(item.id);
             }
         });
function closeTab(id){
	if(id=="closeCxt_crt"){
		var crtTab=$("#centerArea").tabs("getSelected");
		var crtIndex=$("#centerArea").tabs("getTabIndex",crtTab);
		$("#centerArea").tabs("close",crtIndex);
	}else if(id=="closeCxt_all"){
		var allTabs=$("#centerArea").tabs("tabs");
		var len=allTabs.length;
		while(len!=0){
			$("#centerArea").tabs("close",0);
			len=$("#centerArea").tabs("tabs").length;
		}
	}else if(id=="closeCxt_other"){
		var crtTab=$("#centerArea").tabs("getSelected");
		var crtIndex=$("#centerArea").tabs("getTabIndex",crtTab);//跟addtab时指定的id无关,索引动态改变
		var allTabs=$("#centerArea").tabs("tabs");
		var len=allTabs.length;
		for(var i=0;i<len;i++){
			if(i<crtIndex){
				$("#centerArea").tabs("close",0);
			}else if(i>crtIndex){
				$("#centerArea").tabs("close",1);
			}
		}
	}
}

关键在于closeTab方法的实现。

四、easyui datagrid的编辑功能

<table id="emps" ></table>

easyui datagrid的编辑功能javascript代码:

<script type="text/javascript">
	var obj={
			 editCell:undefined
	};
	$(function (){
		$('#emps').datagrid({    
		    url:'<%=request.getContextPath() %>/userServlet?flag=list',    
		    columns:[[    
		        {field:'CID',title:'CID',width:100},    
		        {field:'CNAME',title:'CNAME',width:100},    
		        {field:'CAGE',title:'CAGE',width:100,align:'right'},    
		        {field:'CSALARY',title:'CSALARY',width:100,align:'right'},
		        {field:'CSUBCOMPANY',title:'CSUBCOMPANY',width:100,align:'right'},    
		        {field:'CDEPT',title:'CDEPT',width:100,align:'right'},    
		        {field:'CBIRTH',title:'CBIRTH',width:100,align:'right'},    
		        {field:'CNOTE',title:'CNOTE',width:100,align:'right',editor:{
		        	type:'text',
		        	options:{}
		        }}    
		    ]],
		    onClickCell:function (rowIndex, field, value){
		    	if(field=="CNOTE"){
		    		if(obj.editCell!=undefined){
		    			$("#emps").datagrid("endEdit",obj.editCell);
		    			obj.editCell=rowIndex;
		    			$("#emps").datagrid("beginEdit",rowIndex);
		    		}else{
		    			obj.editCell=rowIndex;
				    	$("#emps").datagrid("beginEdit",rowIndex);
		    		}
		    	}
		    },
		    onAfterEdit:function (rowIndex, rowData, changes){
		    	var param={
		    			id:rowData.CID,
		    			note:rowData.CNOTE
		    	};
		    	var params={};
		    	 params["param"]=JSON.stringify(param);
		    	 $("#emps").datagrid("loading");
		    	 $.ajax({
		    		 type:'post',
		    		 data:params,
		    		 url:"<%=request.getContextPath() %>/userServlet?flag=update",
		    		 success:function(resultData){
		    			 $("#emps").datagrid("loaded");
		    			 //$("#emps").datagrid("loadData",resultData);
		    			$.messager.show({
		    				title:'我的消息',
		    				msg:'更新成功。'
		    			})
		    		 },
		    	//服务器发生错误了,不管服务器端有没有try catch【反正我测试了有的,没有的也不知道error啊】	 
		    		 error:function(){
		    			 $("#emps").datagrid("loaded");
		    			 //$("#emps").datagrid("loadData",resultData);
		    			 alert(resultData.info);
		    		 }
		    	 });
		    }
		});
	});
</script>

 

上一篇:前端学习网站


下一篇:.net项目开发经验