dijit / form / NumberTextBox是否支持阿拉伯数字

时间:2014-03-19 20:43:06

标签: dojo arabic

我似乎无法获得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中验证东阿拉伯数字?

1 个答案:

答案 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;
    }
  });
});