大佬教程收集整理的这篇文章主要介绍了jquery – jqgrid掩码编辑,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
非常感谢提前.
更新:我设法凑齐了我正在解决的问题的演示. S-O显然删除了我想要包装它的html,以便它可以插入并按原样运行,所以你需要将它包装在一些html中才能看到它的工作原理.再次感谢您的帮助.这是代码:
<title>Mask Problem</title> <Meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/redmond/jquery-ui.css" /> <link rel="stylesheet" type="text/css" href="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.2.0/css/ui.jqgrid.css" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.maskedinput-1.3.min.js"></script> <script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.2.0/js/i18n/grid.locale-en.js"></script> <script type="text/javascript" src="http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.2.0/js/jquery.jqGrid.src.js"></script> <script type="text/javascript"> $.jgrid.no_legacy_api = true; $.jgrid.useJSON = true; </script> <script type="text/javascript"> $(function () { var lastSel = -1; var mydata = [ { HoursWorked: "0:00" },]; $.mask.deFinitions['5'] = '[0-5]'; $.mask.deFinitions['2'] = '[0-2]'; var $grid = $("#MyGrid"); $grid.jqGrid({ datatype: "local",data: mydata,height: 'auto',width: 700,colNames: ["Hours Worked"],colmodel: [ { name: "HoursWorked",index: "HoursWorked",width: 85,editable: true,edittype: "text",editoptions: { size: 20,maxlength: 30,dataInit: function (elem) { $(elem).mask("29:59"); } },align: "center",editrules: { custom: true,custom_func: validHourEntry } } ],multiSELEct: false,caption: "My sample grid with Mask",rowNum: 10,cellEdit: true,rowList: [5,10,20],pager: '#MyGridpager',gridview: true,beforeSELEctRow: function (rowid) { if (rowid !== lastSel) { $(this).jqGrid('restoreRow',lastSel); lastSel = rowid; } return true; },cellsubmit: "clientArray" }).jqgrid("navGrid","#MyGrid",{ add: false,del: false }); ; }); function validHourEntry(value,colName) { var editsuccess = true; var errorMsg = ""; if (/^([0-1][0-9]|2[0-3]:[0-5][0-9])$/.test(value)) { return [true,""]; } else { return [false,"is wrong time.<br/>Please enter the time in the form <b>hh:mm</b>"]; } } </script>
在内联编辑或
在表单编辑中.
我通过以下方式实现了这一点.首先,我定义了两个掩码:一个用于输入0-2的数字,另一个掩码用于输入0-5的数字:
$.mask.deFinitions['2']='[0-2]'; $.mask.deFinitions['5']='[0-5]';
并在网格中使用以下“时间”列的定义:
{name: 'time',index: 'time',width: 70,editoptions: {dataInit: function (elem) { $(elem).mask("29:59"); }},editrules: {time: truE}}
我添加了关于编辑规则的时间验证:{time:truE}以防止输入时间如27:20.增加标准时间验证显示不完美的错误警告
我们可以使用自定义验证来改进结果:
{name: 'time',editrules: {Custom: true,custom_func: function (value) { if (/^([0-1][0-9]|2[0-3]:[0-5][0-9])$/.test(value)) { return [true,""]; } else { return [false,"is wrong time.<br/>Please enter the time in the form <b>hh:mm</b>"]; } }}}
我确信您可以通过另一个自定义掩码插件和验证来提高可见性.无论如何,我的实验表明,可以在jqGrid中成功使用掩码插件.
你可以看到演示here.
更新:对不起罗恩,为了写这个,但你发布的代码是一个很好的例子,一个人不应该写程序,以及如何不应该使用jqGrid.一开始我不想写任何评论,但后来我决定向你描述代码中的错误并解释如何修改代码.
代码中的第一个问题是您使用了对象类SampleJSObject而不是直接使用函数.从语法中如何定义构造函数和对象的方法,代码是正确的,但是……
>在对象构造函数中进行一些常规全局设置的意义何在. Yo使用$.mask.deFinitions [‘5′] ='[0-5]’;例如.每次创建SampleJSObject实例时,都将设置或覆盖全局设置.它看起来像副作用.
>您在代码的顶层定义了函数SampleJSObject,而不是在$(document).ready中使用它,因此您定义了全局类.
>在$(document).ready中,你定义了未初始化的变量lastSel,并尝试在另一个范围内定义的函数SampleJSObject中初始化它.所以变量lastSel在$(document).ready中保持未初始化,但是你在构造函数中设置了另一个全局变量lastSel.
> minutesToHours等方法与您的SampleJSObject类无关.为什么函数或calculateHoursAndminutes应该是该类的成员?在我看来,这是设计上的错误.
> init方法只设置jqgridParms属性.您可以在构造函数中以相同的方式执行此操作,但在这两种情况下,我都不清楚为什么需要和方法定义如此特定的参数.我不认为你会创建这样一个特定类的一个实例.为什么需要这样的类,你必须覆盖几乎任何方法来创建类的第二个实例?
>在jqGrid的参数列表中,您使用数据类型:“local”,但不使用gridview:true和数据参数,它允许与网格一起创建数据.它可以多次提高网格性能,特别是对于行数较多的网格.在最慢的方法示例中,在loadGrid中使用addRowData.此外,在将忽略rowNum:10并且不会进行本地分页的情况下.
>方法calculate@R_688_10586@l可能是虚拟Week@R_688_10586@l列最慢的实现.该功能的最有效实现是使用custom formatter作为Week@R_688_10586@l列
{name:“Week@R_688_10586@l”,index:“Week@R_688_10586@l”,width:55,align:“center”,
formatter:function(cellvalue,options,rowObject){
/ *在这里你可以像rowObject.Sundayminutes一样访问同一行的其他列,并从函数中返回calculatedWeek@R_688_10586@lvalue作为HTML片段的字符串* /
}}
>如果您需要使用具有相同属性的许多列,则可以定义列模板(请参阅here):
var @R_19_6674@Template = {width:85,editable:true,edittype:“text”,editoptions:{size:20,maxlength:30,dataInit:function(elem){$(elem).mask(“29:59”); }}
然后将例如Sundayminutes列的定义减少到
以上是大佬教程为你收集整理的jquery – jqgrid掩码编辑全部内容,希望文章能够帮你解决jquery – jqgrid掩码编辑所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。