有没有办法限制用户在oracle jet中输入超过一定限制的字符
Is there a way to restrict users from entering characters beyond a certain limit in oracle jet
在oracle jet中有没有办法限制用户输入超过一定限制的字符? input html 元素的 maxlength 属性不允许用户输入超出最大长度的字符。
根据评论编辑:
不幸的是,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
是OJET在viewModel与HTML绑定后隐式调用的方法。它类似于 $(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。
如果您使用的是通用输入支架,您将失去许多 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个字符,它会自动删除(目的是限制用户输入超过限制的字符数)
在oracle jet中有没有办法限制用户输入超过一定限制的字符? input html 元素的 maxlength 属性不允许用户输入超出最大长度的字符。
根据评论编辑:
不幸的是,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
是OJET在viewModel与HTML绑定后隐式调用的方法。它类似于 $(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。
如果您使用的是通用输入支架,您将失去许多 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个字符,它会自动删除(目的是限制用户输入超过限制的字符数)