1- var mask = new InputMask([new Input(JST_CHARS_BASIC_ALPHA + "._", 1, -1), new Literal("@"), new Input(JST_CHARS_BASIC_ALPHA + "._", 1, -1)], "control");
2- Funciona con textarea. Tu codigo es executado en el onload ó después de la declaración de la textarea? es un error común hacer algo así:
<script>
//En este momento, no existe el control todavia
new InputMask(..., "control");
</script>
...
<input name="control">
La versión 2.1 va a salir en algunos dias y las mascaras están bastante mejoradas...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Realmente, esso ocurre con textarea, y sólo en el Internet Explorer (que yo odio).
Me certificaré que esso no ocurra en la versión 2.1 (lo que más me está tomando tiempo es escribir el manual del usuário). Creo que en esta proxima semana sale, si Dios quiere!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok, si yo quisiera cambiar mi antigua version 2.0 por la nueva 2.1 en teoria no tendria ningun problema aunque ya el proyecto lo lleve abanzado con la version 2.0 ?
Disculpame que te moleste tanto, yo busco en el API pero encuentro lo que busco pero no se como utilizarlo.
Tengo una tabla algo como esto:
function setUpTable() {
//Instantiate the table
table = new JavaScripTable("jst", getObject("jstContainer"));
Quiero que cuando yo modifique el valor del control de la columna "colPrecio" me cree un objeto x y lo inserte en un array, como ves lo intente con la funcion "validateFunction" de la columna, pero no funciona ya que cada ves que modifico el control inserta tres objetos iguales.
Como puedo saber cuando se modifico el valor de un del objeto control de una columan para ir guardando el nuevo valor en un array?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
La versión 2.1 es "backward compatible" con la 2.0.X. Nuevas cosas fueron agregadas y las que cambiaran funcionan igual a la anterior.
Entiendo que queieres un array para saber que rows fueron atualizados y grabarlos en el la base de datos, correcto?
No existe un onchange en la table.
Te sugiro los pongas en un Map, no array (porque en Map no se repiten las llaves) en el keyPress de la mascara. Exemplo:
//Esto va afuera del setupMask
var suppliersForUpdate = new Map();
//y, en la columna:
getMaskFunction = function(control, column, row) {
control.row = row;
var mask = new NumberMask(column.getParser(), control, 6);
mask.keyPressFunction = function(event, mask) {
var supplier = suppliers[mask.control.row.id];
suppliersForUpdate.put(supplier.id, new Supplier(supplier.id, supplier.nombre, mask.parser.parse(mask.control.value)));
};
return mask;
};
...
//El array de cambiados
suppliersForUpdate.getValues();
No sé si me hice claro...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Necesito que cuando edite un edit control su className cambie y se mantenga. Algo similar a lo que ocurre cuando la funcion validateFunction retorna false.
como ves dentro del mask.keyUpFunction el problema aqui es que el estilo cambia solo cuando digito, cuando el edit control pierde el foco, regresa al estilo predeterminado.
saludos...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
El JavaScripTable cambia el className...
Puedes cambiar el control.style (exemplo: control.style.color = "red") que tiene prioridad sobre el className.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hola!
Tengo dos preguntas:
1- Existe alguna posivilidad de que con un InputMask puda crear una mascara par e-mal?. Si se puede agradeceria un ejemplo.
2- Quisiera saber si a un textarea se le puede asignar una mascara alfa numerica (JST_MASK_ALPHA )?
ya que tengo el siguiente codigo que no me funciona:
var maskDireccion = new InputMask(JST_MASK_ALPHA, "txtAddress");
donde txtAddress es un textarea.
De antemano gracias
1- var mask = new InputMask([new Input(JST_CHARS_BASIC_ALPHA + "._", 1, -1), new Literal("@"), new Input(JST_CHARS_BASIC_ALPHA + "._", 1, -1)], "control");
2- Funciona con textarea. Tu codigo es executado en el onload ó después de la declaración de la textarea? es un error común hacer algo así:
<script>
//En este momento, no existe el control todavia
new InputMask(..., "control");
</script>
...
<input name="control">
La versión 2.1 va a salir en algunos dias y las mascaras están bastante mejoradas...
Después de la declaración de la textarea. Algo como esto:
<script>
function setupMask(){
var maksDireccion = new InputMask(JST_MASK_ALPHA , "txtAddress");
}
</script>
<div>
<textarea name="txtAddress" id="txtAddress" cols="80" rows="3"></textarea>
<div>
<script>setupMask();</script>
Por como tengo que generar la pagina con php no puedo utilizar onload puesto que la pagina la formo con tres archivos:
1 - Un header.htm (donde se abre la etique <HTML>, donde esta <head> </head> y donde abro la etiqueta <body onLoad="x">)
2- Un body.html que es donde esta el javascript de la funcion setupMask(), la declaracion del textarea.
3- footer.htm donde se cierran las etiquetas </body> </html>
El header.htm se utiliza en el proyecto para crear muchas otras paginas por lo tanto no puedo llamar a setupMask() desde el onLoad.
Lo que me estraña es que con los text si me funciona bien con un codigo similar el problema es con los text area.
El problema propiamente es que cuando digito dentro del textarea "me saca de el" y si quiero volver a digitar tengo que dar click sobre el.
Realmente, esso ocurre con textarea, y sólo en el Internet Explorer (que yo odio).
Me certificaré que esso no ocurra en la versión 2.1 (lo que más me está tomando tiempo es escribir el manual del usuário). Creo que en esta proxima semana sale, si Dios quiere!
Ok, si yo quisiera cambiar mi antigua version 2.0 por la nueva 2.1 en teoria no tendria ningun problema aunque ya el proyecto lo lleve abanzado con la version 2.0 ?
Disculpame que te moleste tanto, yo busco en el API pero encuentro lo que busco pero no se como utilizarlo.
Tengo una tabla algo como esto:
function setUpTable() {
//Instantiate the table
table = new JavaScripTable("jst", getObject("jstContainer"));
//Set the table properties
table.operationMode = JST_SERVER_SIDE;
table.updateTableFunction = updateTable;
table.selectionType = JST_SEL_SINGLE;
table.usePaging = true;
table.allowChangePaging = false;
table.allowTopLink = false;
table.pageSize = 7;
table.currentPage = 1;
table.width = "98%";
//Set the ObjectRowMapping identifier name (id on Customer object)
table.identifierName = "id";
//Add the columns
colNombre = table.addColumn(new Column("Nombre Proveedor", JST_TYPE_STRING, 250, JST_ALIGN_LEFT));
colCodigo = table.addColumn(new Column("Código Proveedor", JST_TYPE_STRING, 130, JST_ALIGN_LEFT));
colPrecio = table.addColumn(new Column("Costo Unitario", JST_TYPE_CURRENCY, 130, JST_ALIGN_RIGHT));
with (colPrecio) {
editControl = new EditControl(JST_CONTROL_TEXT);
editControl.attributes = "maxlength='20' style='text-align:" + align + "; width:" + width + "px'";
editControl.name = "income";
validateFunction = function(val, col, row) {
supplier = suppliers[row.id];
if (val != supplier.precio){
suppliersForUpdate[suppliersForUpdate.length] = new Supplier( supplier.id, supplier.nombre, val);
}
return true;
};
getMaskFunction = function(control, column, row) {
return new NumberMask(column.getParser(), control, 6);
};
editable = true;
}
initInterfaz();
updateTable();
}
Quiero que cuando yo modifique el valor del control de la columna "colPrecio" me cree un objeto x y lo inserte en un array, como ves lo intente con la funcion "validateFunction" de la columna, pero no funciona ya que cada ves que modifico el control inserta tres objetos iguales.
Como puedo saber cuando se modifico el valor de un del objeto control de una columan para ir guardando el nuevo valor en un array?
La versión 2.1 es "backward compatible" con la 2.0.X. Nuevas cosas fueron agregadas y las que cambiaran funcionan igual a la anterior.
Entiendo que queieres un array para saber que rows fueron atualizados y grabarlos en el la base de datos, correcto?
No existe un onchange en la table.
Te sugiro los pongas en un Map, no array (porque en Map no se repiten las llaves) en el keyPress de la mascara. Exemplo:
//Esto va afuera del setupMask
var suppliersForUpdate = new Map();
//y, en la columna:
getMaskFunction = function(control, column, row) {
control.row = row;
var mask = new NumberMask(column.getParser(), control, 6);
mask.keyPressFunction = function(event, mask) {
var supplier = suppliers[mask.control.row.id];
suppliersForUpdate.put(supplier.id, new Supplier(supplier.id, supplier.nombre, mask.parser.parse(mask.control.value)));
};
return mask;
};
...
//El array de cambiados
suppliersForUpdate.getValues();
No sé si me hice claro...
Exelente! Claro que te explicaste.
Era justo lo que necesitaba.
Si no te molesta sigo con mis preguntas:
Necesito que cuando edite un edit control su className cambie y se mantenga. Algo similar a lo que ocurre cuando la funcion validateFunction retorna false.
Lo intente de esta forma:
with (colPrecio) {
editControl = new EditControl(JST_CONTROL_TEXT);
editControl.attributes = "maxlength='20' style='text-align:" + align + "; width:" + width + "px'";
editControl.name = "income";
getMaskFunction = function(control, column, row) {
control.row = row;
var mask = new NumberMask(column.getParser(), control, 6);
mask.keyUpFunction = function(event, mask) {
control.className = "JSTInvalidEditControl";
var supplier = suppliers.get(mask.control.row.id);
if( suppliersForUpdate.get(supplier.id) != null ){
suppliersForUpdate.get(supplier.id).precio = mask.parser.parse(mask.control.value);
}else{
suppliersForUpdate.put(supplier.id, new Supplier(supplier.id, supplier.nombre, mask.parser.parse(mask.control.value)));
}
};
return mask;
};
como ves dentro del mask.keyUpFunction el problema aqui es que el estilo cambia solo cuando digito, cuando el edit control pierde el foco, regresa al estilo predeterminado.
saludos...
El JavaScripTable cambia el className...
Puedes cambiar el control.style (exemplo: control.style.color = "red") que tiene prioridad sobre el className.