有没有一种方法可以限制用户在oracle jet中输入超出特定限制的字符

时间:2018-07-12 06:58:43

标签: oracle-jet

是否有一种方法可以限制用户在oracle jet中输入超出特定限制的字符?输入html元素的maxlength属性不允许用户输入超出maxlength个字符的字符。

2 个答案:

答案 0 :(得分:0)

基于评论进行编辑:

不幸的是,OJET没有提供实现此目的的方法。可以通过jQuery这样完成:

HTML

<oj-input-text id="text-input" value="{{value}}"></oj-input-text>

JS

this.value = ko.observable("Green");
self.bindingsApplied = function(){
    $($('#text-input').find('input')[0]).attr('maxlength','5');
};

bindingsApplied是viewModel与HTML绑定后,由OJET隐式调用的方法。它类似于$(document).ready();


原始答案:

是的。不满足要求时,您不仅可以限制允许的字符数,还可以提供自定义错误消息-或者让OJET显示默认消息。

HTML:

<oj-input-text value="{{value}}"
              validators="[[validators]]"
              placeholder="up to 10 characters">
</oj-input-text>

JS:

self.validators = ko.computed(function()
{
  return [{
    type: 'length', 
    options: {max: 10,
              messageSummary : {
        tooLong: 'Too Long: Too many characters'
      }}}];
});

更多示例here

答案 1 :(得分:0)

如果您使用通用输入支架,则会丢失许多OJET功能。要使用OJET指定的组件实现相同的功能,我认为这是您应该追求的目标-

我已经实现了输入框,在该输入框中可以接受8个字符的正确输入,并且您可以进行任何其他自定义验证-

HTML(输入元素)

<oj-input-text  data-bind="event:{keyup: sortCodeEventUp }"
            type="text"
            :id="sortCode"
            name="sortCode"
            raw-value="{{sortCodeRawValue}}"
            value="{{sortCode}}"
            validators="{{[sortCodeValidator]}}"
            required>
</oj-input-text>

JS

self.sortCodeRawValue = ko.observable();
var sortCodePrevValue = "";

self.sortCodeValidator = {
    validate: function (value) {
        if (value.length !== 8) {
            throw new Error("You must enter 8 charecters");
        }
    }
};

self.sortCodeEventUp = function () {
    if (self.sortCodeRawValue().length <= 8) {
        sortCodePrevValue = self.sortCodeRawValue();
    } else {
        $("#sortCode").val("");
        $("#sortCode").val(sortCodePrevValue);
    }
};

行为
输入8个字符(按9个字符)后,它会被自动删除(这是为了限制用户输入的字符数超过限制)