是否有一种方法可以限制用户在oracle jet中输入超出特定限制的字符?输入html元素的maxlength属性不允许用户输入超出maxlength个字符的字符。
答案 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个字符)后,它会被自动删除(这是为了限制用户输入的字符数超过限制)