分享好友 前端技术首页 频道列表

JQuery easyUi datagrid 中 editor 动态设置最大值最小值

Jquery  2023-02-08 18:360
近来项目中使用到 easyui 来进行页面设计,感觉挺方便的,但是网上除了api外,其他有价值的资料比较少,故在此分享一点经验,供大家参考。
 

问题

JQuery easyUi datagrid 可编辑行的editor属性具有 min 和 max 属性,设置可以输入的最大值和最小值,但是这个是固定的,如下:
[html] view plain copy
 
  1. {field:'workRate',title:'<%/*填报*/%><bean:message key="task.workloadnew.addreport.jsp.message005"/><br><%/*完成率*/%><bean:message key="task.workloadnew.addreport.jsp.message006"/>',align:'center',width:50,  
  2.                     formatter:function(value, rowData, rowIndex){  
  3.                         if(value && value!=0)  
  4.                         {  
  5.                             return value + '%';  
  6.                         }  
  7.                         else  
  8.                         {  
  9.                             return "";  
  10.                         }  
  11.                     },  
  12.                     editor:{  
  13.                         type:'numberspinner',  
  14.                         options: {  
  15.                             increment:10,  
  16.                             min:0,  
  17.                             max:100  
  18.                         }  
  19.                     }  
  20.                 }  


min:0,max:100 限定了每次该输入框只能输入的范围是 0 - 100,而我每条记录的输入的范围是根据这条记录来定的,也就是说每次都要重新指定。但是,
苦于editor:{...} 中不带自定义函数。故需要在其他内置函数中想办法。
 

解决办法

a. 在激活编辑状态时触发编辑器重置最大值和最小值

此方法的主要原理是激活编辑状态后,得到编辑器的jquery 对象,设置编辑器的范围,如:
[html] view plain copy
 
  1. var editors = $('#workloadTable').datagrid('getEditors', rowIndex);  
  2.   
  3. var workRateEditor = editors[0]; // 百分比编辑框  
  4.   
  5. workRateEditor.target.numberspinner({min:rowData.minRate,max:rowData.maxRate})  

rowData.minRate 和 rowData.maxRate 是每条记录的填报范围。
 
这个是编辑器激活时进行重置的,但是这个触发有缺点就是,编辑器的初始化已经完成了,而这里会重新初始化,相对于新建了一个编辑器对象,编辑器的宽度会自动调整,这时我们要调整宽度:
[html] view plain copy
 
  1. workRateEditor.target.css("width","50");  

但是还是会有其他问题,比如说每次重写触发的时候,会覆盖原来设置的值,这个操作性就下降了不少。。。也可以进行特殊处理。

b. 在激活编辑器状态前设置

[javascript] view plain copy
 
  1. onBeforeEdit:function(rowIndex, rowData)  
  2.             {  
  3.                 //任务完成100%, 并且已审核通过,不能编辑  
  4.                 if(rowData && rowData.status && (rowData.status=='TASK_ASSIGNER_AUDITED' || rowData.status=='TASK_MONITOR_AUDITED') && rowData.finishRate == 100)  
  5.                 {  
  6.                     return false;  
  7.                 }  
  8.   
  9.                 // 重要! 重新设置百分比填报范围  
  10.                 var columnOption = $('#workloadTable').datagrid('getColumnOption',"workRate");  
  11.                 columnOption.editor.options.min = rowData.minRate;  
  12.                 columnOption.editor.options.max = rowData.maxRate;  
  13.   
  14.                 // 解决单击一行会自动设置最小值的问题  
  15.                 if(rowData.workRate == 0)  
  16.                 {  
  17.                     rowData.workRate = "";  
  18.                 }  
  19.             }  

这样就可以每次输入前都已经设置好了输入范围,所以编辑器激活后已经完成初始化,所以编辑器的大小不会变化。故推荐使用这种方法。

查看更多关于【Jquery】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
邮箱自动提示Jquery 插件-实战.失败品
看到很多 SNS 类网站都有 邮箱注册功能. 参考了一下技术过程,触发事件为 focus keyup 和 后缀 mousedown 事件基本匹配过程就可以完成了. 所以写了下面的代码. 对  万一用户 选择错误.目前很多SNS 站都是要 手动删除后另行选择.我就写一个 focus 替换函数. 

0评论2023-03-08353

JQuery——事件绑定bind和on的区别
引言  通过JQuery对目标对象绑定事件我们大部分都是通过$('选择器').事件名()的形式实现,其实对事件的绑定还可以使用on和bind,为了搞明白两者之间的区别特做记录,以备以后查阅。正文  bind和on都是给元素绑定事件用的,但两者在使用时有些差别,我们最

0评论2023-03-08787

jQuery select操作
获取Select选择的Text和Value:$("#select_id").change(function(){//code...});//为Select添加事件,当选择其中一项时触发var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Textvar checkValue=$("#select_id").val(); //获

0评论2023-03-08577

17种常用的jQuery全屏焦点图代码 jq 获取焦点
jQuery全屏焦点图特效制作带标题的焦点图切换代码 jQuery背景和banner图片一起切换全屏焦点图切换代码 jQuery仿音悦台网站全屏带标题的焦点图轮播代码 jQuery响应式焦点图插件制作响应式全屏焦点图切换代码 jquery html5响应式幻灯片插件网站响应式全屏幻

0评论2023-03-08612

Jquery 插件 实现浮动层 网页右下弹出层
最近由于公司项目原因要添加一个在网站首页的浮动的弹出层,且比较急,上网大概查找了一下,无奈只能自己动手写了一个。比较简单。源码如下: (function ($) {            $.fn.Messager = function (option) {             

0评论2023-03-08580

Jquery获取服务器端控件的三种方式 js获取服务器地址
一 Jquery获得服务器控件值的方法由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,google了下,总结有以下3种方法:服务器控件代码:asp:TextBox ID="txtUserID" runat="server"/asp:TextBox 1. $("#%=txtUserID.ClientID%"

0评论2023-03-08822

jQuery习题 jquery100例
1.在div元素中,包含了一个span元素,通过has选择器获取div元素中的span元素的语法是?        答:$("div:has(span)"); 2.在ul元素中,添加了多个li元素,通过jquery选择器获取最后一个li元素的方法是?                答:$("li:last")3.在页面中有

0评论2023-03-08817

JQuery的父、子、兄弟节点选择器 jquery获取父节点和子节点
jQuery.parent(expr) //找父元素jQuery.parents(expr)//找到所有祖先元素,不限于父元素jQuery.children(expr)//查找所有子元素,只会找到直接的孩子节点,不会返回所有子孙jQuery.contents()//查找下面的所有内容,包括节点和文本。jQuery.prev()//查找上一

0评论2023-03-08671

一个关于 jquery 和 php 的 jsonp 例子(与后台PHP成功通信)
script $(document).ready(function(){$.ajax({ url:'http://localhost/test/jsonp.php', dataType:"jsonp", //重点,使用jsonp方式解决跨域问题 jsonp:"jsonpcallback", //回调函数名,和php端统一 timeout: 5000, success:function(data, status){ alert('s

0评论2023-03-08838

jQuery委托 jquery事件委托方法
$('#container').on('click', '.elementClass', function() {// code});http://stackoverflow.com/questions/10082031/why-use-jquery-on-instead-of-click

0评论2023-03-08736

更多推荐