如何解决如何使用制表符限制可编辑表中输入的最大长度?
当我使用maxLength:5
验证程序时,没有将maxlength
属性应用于<input />
,因此用户可以超过限制。是否可以直接限制他们的输入,而不是让他们违反规则,然后不得不向他们解释出了什么问题?
我认为总体上来说,这将是更好的UX,并且对于用户和开发人员而言都更容易。
此外,我尝试使用某些回调将maxlength手动添加到<input />
中,但是似乎其中任何一个触发时都不会创建输入。
编辑:这是我们正在使用的代码:
var table = new Tabulator("#datatable",{
height: "480px",// set height of table (in CSS or here),this enables the Virtual DOM and improves render speed dramatically (can be any valid css height value)
layout: "fitDataFill",columns: [{ "field": "ID","frozen": true,"title": "ID","validator": [] },{ "editor": "input","field": "NameEN","validator": ["maxLength:5"] }],addRowPos: "top",cellEdited: function (cell) {
cell.validate();
var element = cell.getElement();
$(element).addClass('edited-cell');
dispatch(actions.EDIT_DATA);
},validationMode: "blocking",validationFailed: function (cell,value,validators) {
var validationMessages = "";
validators.forEach((validator) => {
var message = $('#validation-' + validator.type).val() + "\n";
validationMessages += message.replace('{value}',validator.parameters);
});
//cell - cell component for the edited cell
//value - the value that Failed validation
//validatiors - an array of validator objects that Failed
},headerFilter: true
});
解决方法
制表符中的验证和编辑系统是完全分开的。 Tabulator中的验证程序不会影响编辑器,一旦设置了值,便会应用它们。
一旦提交了编辑器上的值(在这种情况下,是由于单元格失去焦点),则将其提交给验证器函数,如果通过则进行更改,如果失败,则将单元格标记给用户无效,焦点便传回了单元格,这样他们就可以纠正错误。
如果要从物理上阻止用户输入超过5个字符,则需要在编辑器上进行设置:
{field:"NameEN",editor:"input",editorParams:{
elementAttributes:{
maxlength:"10",//set the maximum character length of the input element to 10 characters
}
}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。