我有一个以这些参数开头的dijit.form.NumberTextBox输入字段:
new dijit.form.NumberTextBox({
id: din1,
style: "width:60px",
constraints: {
places: 0,
pattern: '######'
}
},
din1);
一切都很好。我的问题是我想在飞行中改变'地方'和'模式'的参与。所以我写这个来改变'places'和'patterns'参数:
var myFldObj = dijit.byId(din1);
if (myFldObj) {
var myConstObj = myFldObj.attr('constraints');
if (myConstObj) {
myConstObj.places = 2;
myConstObj.pattern = '#####.0';
}
}
所以,在我再次显示表单之后,我希望输入字段允许2位小数,但表单仍然表现为places = 0和pattern ='######'。当我检查'places'和'pattern'的值时,我得到了我期望的结果(2和#####。0)。我的问题:
你可以动态改变这些值吗?
OR
你是否必须销毁原始的dijit对象并使用新的parms重建?
THX !!
答案 0 :(得分:1)
所以,这对我有用:
首先,我认为这是一个错误,因为输入字段的开头就像
new dijit.form.NumberTextBox({
id: "fieldID",
style: "width:60px",
constraints: {
places: 0
}
},
"fieldID");
随后使用以下代码进行更改:
注意:ntbArry - 绑定到html的dijit.form.NumberTextBox objs数组 输入标签ID。
for (var x=0;x < ntbArry.length;x++) {
var handle = ntbArry[x];
if (handle) {
handle.attr('constraints').places = 2;
handle.attr('constraints').pattern = '#####.0#';
}
}
与这种方式创建的字段没有相同的行为(动态没有约束mod):
new dijit.form.NumberTextBox({
id: "fieldID",
style: "width: 60px",
constraints: {
places: 2,
pattern: '#####.0#'
}
},
"fieldID");
它的行为很接近,但每次键入小数点时,都会弹出错误消息,说明无效条目。在最初使用约束places = 2和pattern'#####。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");
这是一些额外的步骤但是,至少我知道这对我有用。如果我遗漏了一些基本的东西,请告诉我,很容易错过这些东西的小细节。
答案 1 :(得分:0)
我使用Dojo 1.3,我可以看到dijit.form.NumberTextBox没有pattern
和places
属性,但具有editOptions
属性。所以我会尝试改变这样的约束:
myConstObj.editOption.places = 2;