Menu

mask and onchange event

Jesús
2006-02-13
2013-04-22
  • Jesús

    Jesús - 2006-02-13

    hello!

    I have a problem must number mask in text and need to use the event onchange of that text.  At the moment he does not allow me to use the event.  they can help me?

     
    • Luis Fernando Planella Gonzalez

      Hi!
      You should use a callback on the mask:
      function myhandler(mask) {
          // You can read mask.control for the input reference
      }
      mask.updateFunction = myhandler;

       
      • Jesús

        Jesús - 2006-02-15

        Gracias Luis Fernando.
        Espero no te moleste que te consulte en español.

        No te entendi..

        Disculpame pero es que estoy empezando a utilizar javascriptools_2.0.4 y javascript en general y no soy muy agil.

        Mi problema es el siguiente:

        tengo una tabla donde se despliegan los siguientes datos: articulo, proveedor y precio. El precio lo despliego en un text al cual le aplico una number mask. Yo necesito que cada ves que se cambie el value de los campos precio, se actualice la bd; para esto es que necesito utilizar el onchange de los texts. No se porque razon cuando aplico la mascaras no puedo utilizar este evento.

        a continuacion te muestro la funcion que crea los ojetos mask para los precios, se que esta mal porque estoy creando muchos objetos con el mismo nombre.

        function setupMask() {
              
                //Set up the NumberMasks
                var decimalSeparator = ",";
                var groupSeparator = ".";
               
           
                var tbl = document.getElementById("tblSupplier");
                var rows = tbl.rows.length;

                for(i=0; i < rows; i++){
                    if (document.getElementById( tbl.rows[i].id ) != null)
                    {
                        text = document.getElementById("precio_" + tbl.rows[i].id );
                       
                              var numParser = new NumberParser(0, decimalSeparator, groupSeparator, true);
                            numParser.currencySymbol = "¢"
                            numParser.useCurrency = true;
                            numParser.negativeParenthesis = true;
                            numParser.currencyInside = true;
                            var numMask = new NumberMask(numParser, text.id, 15,true);
                            numMask.allowNegative = false;
                            numMask.update();
                    }
                   
                }
            }

        Espero averme explicado bien, y que me puedas sugerir algo.

        De antemano gracias.

         
        • Luis Fernando Planella Gonzalez

          Por suerte te puedo contestar en español también ;-)
          En JavaScript, una función es un tipo de datos tal cual un número ó una string. Entonces es possible assignar a una variable una función. Exemplo: var a = function(x) { return x * 2; }; alert(a(3));
          Lo que se llama "callback" en las máscaras son funciónes que són llamadas en ciertos eventos.
          En el caso, hagas: numMask.updateFunction = miFuncion; y, antes del setupMask, declare ella:
          function miFuncion(mask) {
              //Acá es el código para cuando la máscara cambie.
          }

          Leé la documentación de la API, hay otros (keyPressFunction, keyDownFunction, ...)

          Está claro ahora?

           
    • Jesús

      Jesús - 2006-02-16

      Exelente! ya te entendí.

      Muy amable gracias.

      pura vida!

       
    • Fabricio

      Fabricio - 2006-10-04

      Debtor! This helped me very! It functioned using callback in onchange! Thanks!   

      var mascaraPlaca = function (mascara) {        
          mascara = new InputMask("UUU-####", "placa");               
          return customMask;
      }

      <input name="test" onchange="customMask.updateFunction = mascaraPlaca (customMask);">

      The Function must be declared before input.

       
    • Luis Fernando Planella Gonzalez

      I think you're doing something wrong there...
      You should set the mask once, not every time the field changes...
      The new InputMask(...) code sets up a mask and apply event handlers on the field. By instantiatind one on each change event, you are multiplying the event listeners by the number of times the field changed...
      You can:
      1) Write a onload event listener to the page and set up the masks (as in the examples)
      2) Write a JavaScript tag just after the field, like:
      <input name="x" ...>
      <script>new InputMask("UUU-####", "x");</script>

      Hope you get it...

       

Log in to post a comment.