Итак, вот то, что работает для меня:
Во-первых, я думаю, что это ошибка, потому что поле ввода, которое начинается как
new dijit.form.NumberTextBox({
id: "fieldID",
style: "width:60px",
constraints: {
places: 0
}
},
"fieldID");
, который затем изменен на лету с кодом, как:
Примечание: ntbArry - Массив dijit.form.NumberTextBox Objs привязан к HTML ввода тегов ид.
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");
Это близко в поведении, но каждый раз, когда вы набираете десятичную точку, ошибка появляется сообщение о недопустимой записи. Это сообщение не появляется при вводе десятичной точки в поле, которое изначально было создано с ограничениями места = 2 и шаблоном «#####. 0 #».
Таким образом, чтобы получить исходное поведение я хотел:
fieldIDEvents является массивом додзе событий, привязанных к полям NumberTextBox. Перед тем как продолжить разъединители додзе события
for (var x=0;x < fieldIDEvents.length;x++) {
var handle = fieldIDEvents[x];
if (handle) {
dojo.disconnect(handle);
}
}
затем уничтожить NumberTextBox додзё объекты
for (var x=0;x < ntbArry.length;x++) {
var handle = ntbArry[x];
if (handle) {
handle.destroy();
ntbArry[x] = null;
}
}
Далее, поместите входной тег обратно в HTML, потому что он разрушается:
ПРИМЕЧАНИЕ: tdtag и id в теге html td, который должен содержать тег ввода.
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");
Это несколько дополнительных шагов, но, по крайней мере, я знаю, это то, что работает для me..If я что-то не хватает основной, пусть я знаю, легко пропустить мелкие детали с этим материалом.
Дополнительная информация: после изменения противопоказаний, когда я печатаю '1.' в поле ввода появляется недопустимое сообщение после ввода «.». Но, если я набираю «1» и выхожу из поля, никакого сообщения об ошибке и не форматирует его, как я ожидал бы «1.00». Итак, это ошибка? или я чего-то не хватает ??? – GoinOff
Больше странности: ввод «1.0» вкладки создает сообщение об ошибке, когда нужно просто добавить нуль (1.00). Когда я печатаю вкладку «1.1», она форматирует ее правильно (1.10) - нет сообщений об ошибке. Чрезвычайно багги кажется ..... – GoinOff
Сами шаблоны номера Java чрезвычайно сложны и недостаточно четко указаны. Я думаю, что вам нужно иметь фиксированное «0» во всей части, и если вы вручную устанавливаете места, почему бы не использовать «#» в десятичной системе, например «##### 0. ###» Делает это работать лучше? – peller