Alors, voici ce qui a fonctionné pour moi:
D'abord, je pense que c'est un bug car un champ d'entrée qui commence comme
new dijit.form.NumberTextBox({
id: "fieldID",
style: "width:60px",
constraints: {
places: 0
}
},
"fieldID");
qui est ensuite changé à la volée avec le code comme:
REMARQUE: ntbArry - tableau de dijit.form.NumberTextBox oBJS liée à un identifiant de balise d'entrée 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#';
}
}
ne présente pas le même comportement qu'un champ créé de cette façon (aucune contrainte mods à la volée):
new dijit.form.NumberTextBox({
id: "fieldID",
style: "width: 60px",
constraints: {
places: 2,
pattern: '#####.0#'
}
},
"fieldID");
Il est proche du comportement, mais chaque fois que vous tapez une virgule décimale, l'erreur un message apparaît indiquant une entrée invalide. Ce message ne s'affiche pas lorsque vous tapez le point décimal sur un champ créé à l'origine avec les contraintes places = 2 et le modèle '#####. 0 #'.
Ainsi, pour obtenir un comportement original que je voulais:
fieldIDEvents est un tableau d'événements liés aux champs dojos NumberTextBox. Avant de poursuivre les événements dojos de déconnexion
for (var x=0;x < fieldIDEvents.length;x++) {
var handle = fieldIDEvents[x];
if (handle) {
dojo.disconnect(handle);
}
}
puis détruire les objets dojo NumberTextBox
for (var x=0;x < ntbArry.length;x++) {
var handle = ntbArry[x];
if (handle) {
handle.destroy();
ntbArry[x] = null;
}
}
Ensuite, placez la balise d'entrée de nouveau dans le code html car il est détruit:
REMARQUE: tdtag et un id sur un tag td html qui doit contenir l'étiquette d'entrée.
var fld1 = this.document.getElementById("tdtag");
if (fld1) {
//alert("\""+fld1.innerHTML+"\"");
fld1.innerHTML = "<input id=\"fieldID\">";
}
Maintenant, créez l'objet NumberTextBox nouveau:
ntbArry[0] = new dijit.form.NumberTextBox({
id: "fieldID",
style: "width: 60px",
constraints: {
places: 2,
pattern: '#####.0#'
}
},
"fieldID");
Il est à quelques pas supplémentaires, mais au moins je sais que c'est ce qui fonctionne pour me..If je manque quelque chose de base, laissez Je sais, il est facile de manquer les petits détails avec ce genre de choses.
Informations supplémentaires: après avoir modifié les contraintes, lorsque je tape un '1' le champ de saisie un message invalide apparaît après que je tape '.'. Mais, si je tape '1' et tabulation hors du champ, aucun message d'erreur et le formate comme je m'attendais à '1.00'. Alors, est-ce un bug ??? ou est-ce que je manque quelque chose ??? – GoinOff
Plus bizarre: en tapant '1.0' l'onglet crée le message d'erreur quand il devrait juste ajouter un zéro (1.00). Quand je tape l'onglet '1.1', il le formate correctement (1.10) - Pas de message d'erreur. Extrêmement buggy est semble ..... – GoinOff
Les modèles de numéros Java eux-mêmes sont extrêmement compliqués et pas bien spécifié. Je pense que vous devez avoir un "0" fixe dans la partie entière, et si vous définissez des emplacements manuellement, pourquoi ne pas utiliser "#" dans la décimale, comme "##### 0. ###" Est-ce que mieux travailler? – peller