所以,这对我有用:
首先,我认为这是一个错误,因为输入字段的开头像
new dijit.form.NumberTextBox({
id: "fieldID",
style: "width:60px",
constraints: {
places: 0
}
},
"fieldID");
然后使用如下代码即时更改:
注意:ntbArry - 绑定到 html 输入标签 ID 的 dijit.form.NumberTextBox 对象数组。
for (var x=0;x < ntbArry.length;x++) {
var handle = ntbArry[x];
if (handle) {
handle.attr('constraints').places = 2;
handle.attr('constraints').pattern = '#####.0#';
}
}
不表现出与以这种方式创建的字段相同的行为(即时没有约束模式):
new dijit.form.NumberTextBox({
id: "fieldID",
style: "width: 60px",
constraints: {
places: 2,
pattern: '#####.0#'
}
},
"fieldID");
它的行为很接近,但每次输入小数点时,都会弹出错误消息,说明输入无效。在最初使用约束 places=2 和模式“#####.0#”创建的字段上键入小数点时,不会弹出此消息。
因此,要获得我想要的原始行为:
fieldIDEvents 是绑定到 NumberTextBox 字段的 dojo 事件数组。在继续断开 dojo 事件之前
for (var x=0;x < fieldIDEvents.length;x++) {
var handle = fieldIDEvents[x];
if (handle) {
dojo.disconnect(handle);
}
}
然后销毁 NumberTextBox dojo 对象
for (var x=0;x < ntbArry.length;x++) {
var handle = ntbArry[x];
if (handle) {
handle.destroy();
ntbArry[x] = null;
}
}
接下来,将输入标记放回 html 中,因为它已被破坏:
注意: tdtag 和 html td 标签上的 id 应该包含输入标签。
var fld1 = this.document.getElementById("tdtag");
if (fld1) {
//alert("\""+fld1.innerHTML+"\"");
fld1.innerHTML = "<input id=\"fieldID\">";
}
现在,再次创建 NumberTextBox 对象:
ntbArry[0] = new dijit.form.NumberTextBox({
id: "fieldID",
style: "width: 60px",
constraints: {
places: 2,
pattern: '#####.0#'
}
},
"fieldID");
这是一些额外的步骤,但至少我知道这对我有用。如果我缺少一些基本的东西,请告诉我,很容易错过这些东西的小细节。