我似乎无法获得dijit / form / NumberTextbox以允许使用东阿拉伯数字作为输入,即使区域设置设置为ar-eg(例如)。举个简单的例子:
<!doctype html>
<html>
<head>
<script>
dojoConfig = {
locale: 'ar-eg',
async: false,
parseOnLoad: false
};
</script>
<!-- <script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js" djConfig='parseOnLoad: false'></script>-->
<script type="text/javascript" src="path/to/dojo/dojo.js.uncompressed.js"></script>
<link rel="stylesheet" type="text/css" href="path/to/dijit/themes/claro/claro.css"/>
</head>
<body class='claro' dir='rtl'>
Some Arabic, for copy-pasting: ٤٥٦ ( == 456)<p>
Enter a number: <div id='ntb'></div>
<script>
require(['dijit/form/NumberTextBox', 'dojo/domReady!'], function(NumberTextBox) {
new NumberTextBox({
//lang: 'ar', constraints: { formatLength: 'short', localeDigit: true }
//lang: 'ar', constraints: { localeDigit: true }
}, 'ntb');
});
</script>
</body>
</html>
NumberTextBox给出了验证错误,说“输入的值不正确”。我已经尝试为NumberTextBox指定一种特定的语言,以及一个神秘的“localeDigit”属性,该属性未记录但在某些测试中使用,但似乎无法使用。
有没有办法让Dojo在NumberTextBoxes中验证东阿拉伯数字?
答案 0 :(得分:0)
我没有直接解决您的问题,因为代码看起来很好(也许它只是一个Dojo错误?)。但我确实有一个坚实的解决方法。
只需创建自己的小部件,扩展NumberTextBox,然后覆盖&#34; isValid&#34;使用您自己的阿拉伯数字验证逻辑的方法。
// @formatter:off
define([
"dojo/_base/declare",
"dojo/_base/lang",
"dijit/form/NumberTextBox"
// @formatter:on
], function(declare, lang, NumberTextBox) {
return declare("your.form.NumberTextBox", [NumberTextBox], {
isValid: function(/*Boolean*/ /*===== isFocused =====*/) {
var valid = this.inherited(arguments);
// your custom validation logic here
var value = this.get("value"); // the current value
return valid;
}
});
});