2011-09-12 6 views
7

dojo newbie - dándole una oportunidad. Después de enviar un formulario, si se devuelve un error desde el servidor me gustaría mostrar ese mensaje en la dijit.form.ValidationTextBoxdojo - forma programática para mostrar el mensaje no válido

var user_email = dijit.byId("login_user_email"); 
user_email.set("invalidMessage", data["result"]["user_email"]); 
//need to force show the tooltip but how??? 

Cualquier ayuda muy apreciada.

Respuesta

2

tiene que hacer la validación en el método de validador. como aquí http://docs.dojocampus.org/dijit/form/ValidationTextBox-tricks ¡también necesita enfocar el widget para mostrar el mensaje! dijit.byId ("whatever"). focus()

+0

gracias: lástima que no pueda mostrar la información sobre herramientas, sin pasar por el método de validación. Solo estoy tratando de mostrar el resultado de la interacción del servidor a través de la información sobre herramientas para ValidationTextBox – Chin

3

Creo que puede mostrar la información sobre herramientas mediante myVTB.displayMessage ('esto viene de la validación de back-end'); método

11

Véalo en acción en jsFiddle.

  1. Solo tiene que mostrar información sobre herramientas:

    var textBox = bijit.byId("validationTextBox"); 
    dijit.showTooltip(
        textBox.get("invalidMessage"), 
        textBox.domNode, 
        textBox.get("tooltipPosition"), 
        !textBox.isLeftToRight() 
    ); 
    
  2. apagar temporalmente el validador cuadro de texto de validación de la fuerza, restaurar el validador original:

    var originalValidator = textBox.validator; 
    textBox.validator = function() {return false;} 
    textBox.validate(); 
    textBox.validator = originalValidator; 
    

o ambas cosas a la vez.

+0

Me gusta :) Parece que habría más en esto, supongo que asumirían que solo harías tu propio widget ... .? – Phix

+0

# 2 es incómodo ... De todos modos, funciona. –

+0

# 2 funcionó para mí, gracias. La única modificación que tuve que hacer fue establecer el foco en mi cuadro de texto como la primera línea: 'textBox.focus();' – Darrelk

0

Sé que esta pregunta es antigua, pero espero que esto ayude a alguien. Sí, usted debe utilizar validadores, pero si usted tiene una razón para no, se mostrará el mensaje e invalidar el campo:

 function(textbox, state /*"Error", "Incomplete", ""*/, message) { 
      textbox.focus(); 
      textbox.set("state", state); 
      textbox.set("message", message); 
     } 
0

Usted puede llamar directamente a la función de "privado":

textBox._set('state', 'Error');

Obtiene el mismo resultado que se sugirió @phusick pero con menos código y podría decirse que de una manera más directa y limpia.

Notas: _set está disponible para ValidationTextBox según lo declarado en su clase base dijit/_WidgetBase.

Demostración en directo: Solución @arber http://jsfiddle.net/gibbok/kas7aopq/

dojo.require("dijit.form.Button"); 
dojo.require("dijit.form.ValidationTextBox"); 
dojo.require("dijit.Tooltip"); 

dojo.ready(function() { 

    var textBox = dijit.byId("validationTextBox"); 

    dojo.connect(dijit.byId("tooltipBtn"), "onClick", function() { 

    dijit.showTooltip(
     textBox.get('invalidMessage'), 
     textBox.domNode, 
     textBox.get('tooltipPosition'), !textBox.isLeftToRight() 
    ); 
    }); 

    dojo.connect(dijit.byId("validatorBtn"), "onClick", function() { 
    // call the internal function which set the widget as in error state 
    textBox._set('state', 'Error'); 
    /* 
     code not necessary 
     var originalValidator = textBox.validator; 
     textBox.validator = function() {return false;} 
     textBox.validate(); 
     textBox.validator = originalValidator; 
    */ 
    }); 

}); 
1

es el mejor cuando se utiliza el nuevo dojo. Solo recuerde establecer el foco en el TextBox antes de llamar al método "displayMessage". estoy usando dojo 1.10 que funciona a crear la siguiente manera:

function showCustomMessage(textBox, message){ 
    textBox.focus(); 
    textBox.set("state", "Error"); 
    textBox.displayMessage(message); 
} 

referencia Dojo GUID para ValidationTextBox: https://dojotoolkit.org/reference-guide/1.10/dijit/form/ValidationTextBox.html

Cuestiones relacionadas