Dojo 使用约束时出现的NumberTextBox问题。模式:“";#%&引用;

Dojo 使用约束时出现的NumberTextBox问题。模式:“";#%&引用;,dojo,dijit.form,Dojo,Dijit.form,我需要在NumberTextBox的值旁边显示一个百分比符号(仅附加%symbol,不需要转换) 目前我正在使用约束:{pattern:“#%”},我注意到dojo向值中添加了两个零位,例如: value 100 displayed as 10000% 这在我的用例中并没有错,相反,我想将其显示为: value 100 displayed as 100% 下面是一个工作示例: 我非常确定我的用例是非典型的,但我想知道您是否知道这个问题的解决方案或解决方法 require(["dijit

我需要在
NumberTextBox
的值旁边显示一个百分比符号(仅附加%symbol,不需要转换)

目前我正在使用
约束:{pattern:“#%”}
,我注意到dojo向值中添加了两个零位,例如:

value 100 displayed as 10000% 
这在我的用例中并没有错,相反,我想将其显示为:

value 100 displayed as 100% 
下面是一个工作示例:

我非常确定我的用例是非典型的,但我想知道您是否知道这个问题的解决方案或解决方法

require(["dijit/form/NumberTextBox", "dojo/domReady!"], function(NumberTextBox){
    new NumberTextBox({
          name: "programmatic",
          constraints: {pattern: "#%"},
          value: 100
    }, "programmatic").startup();
});

不透明度:

之所以会出现这种情况,是因为dojoNumberTextBox的模式中有一个特定的含义,即“%”

想知道更多详情,请

然而,我试图找出产生这种情况的确切原因,我注意到实际的文本框包含隐藏格式的100,dojo正在其上添加一个包含10000%格式值的容器

下图将更好地解释这一点

因此,如果我们需要在文本框中添加“%”
,我们需要找到其他解决方法


希望这能对您有所帮助:)

好吧,这是因为在dojoNumberTextBox的模式中有一个特定的含义,即使用“%”

想知道更多详情,请

然而,我试图找出产生这种情况的确切原因,我注意到实际的文本框包含隐藏格式的100,dojo正在其上添加一个包含10000%格式值的容器

下图将更好地解释这一点

因此,如果我们需要在文本框中添加“%”,我们需要找到其他解决方法


希望这能对你有所帮助:)

实现这种行为有两种方法:

第一种方法 从文本框中添加%符号,使其如下所示

试试这个

第二种方法 正如我们看到的,numberTextBox的名称成为显示容器的id,因此我们可以根据id更新该值

试试这个

下面的代码片段将帮助您理解这一点:

require([“dijit/form/NumberTextBox”、“dojo/on”、“dojo/dom”,
“dojo/aspect”,“dojo/domReady!”],函数(NumberTextBox,on,dom,aspect){
变量numbertextBox=新的numbertextBox({
名称:“编程”,
约束:{模式:“#”},
数值:100
}“方案性”);
numbertextBox.startup();
byId(numbertextBox.name).value=numbertextBox.value+“%”;
打开(numbertextBox,“模糊”,函数(){
byId(numbertextBox.name).value=numbertextBox.value+“%”;
});
在(numbertextBox,“focus”,function(){
byId(numbertextBox.name).value=parseInt(dom.byId(numbertextBox.name).value.replace('%,'');
});
});

不透明度:

实现这种行为有两种方法:

第一种方法 从文本框中添加%符号,使其如下所示

试试这个

第二种方法 正如我们看到的,numberTextBox的名称成为显示容器的id,因此我们可以根据id更新该值

试试这个

下面的代码片段将帮助您理解这一点:

require([“dijit/form/NumberTextBox”、“dojo/on”、“dojo/dom”,
“dojo/aspect”,“dojo/domReady!”],函数(NumberTextBox,on,dom,aspect){
变量numbertextBox=新的numbertextBox({
名称:“编程”,
约束:{模式:“#”},
数值:100
}“方案性”);
numbertextBox.startup();
byId(numbertextBox.name).value=numbertextBox.value+“%”;
打开(numbertextBox,“模糊”,函数(){
byId(numbertextBox.name).value=numbertextBox.value+“%”;
});
在(numbertextBox,“focus”,function(){
byId(numbertextBox.name).value=parseInt(dom.byId(numbertextBox.name).value.replace('%,'');
});
});

不透明度:

感谢您的分享,我还注意到dojo的这一功能似乎非常低,例如,如果您查看NumberTextBox,您可以在第82行看到对它的引用。不知道如何解决这个问题。再次感谢。很高兴能帮助你。我试图找出一些解决办法来实现这一点。以下是其他输入…:)感谢分享,我还注意到dojo似乎在非常低的级别上具有此功能,例如,如果您查看NumberTextBox,您可以在第82行看到对的引用。不知道如何解决这个问题。再次感谢。很高兴能帮助你。我试图找出一些解决办法来实现这一点。以下是其他输入…:)感谢您的解决方案:)感谢您的解决方案:)
<label for="programmatic">Opacity:</label>
<input id="programmatic" type="text" />
https://jsfiddle.net/vikash2402/2w3wx5rm/4/
https://jsfiddle.net/vikash2402/2w3wx5rm/6/