dojo - 显示无效消息的编程方式

时间:2011-09-12 05:22:30

标签: dojo

道场新手 - 给它一个机会。 提交表单后,如果从服务器返回错误,我想在dijit.form.ValidationTextBox上显示该消息

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

任何帮助都非常感激。

6 个答案:

答案 0 :(得分:11)

jsFiddle看到它的实际效果。

  1. 只需显示工具提示:

    var textBox = bijit.byId("validationTextBox");
    dijit.showTooltip(
        textBox.get("invalidMessage"), 
        textBox.domNode, 
        textBox.get("tooltipPosition"),
        !textBox.isLeftToRight()
    );
    
  2. 暂时切换textBox验证器,强制验证,恢复原始验证器:

    var originalValidator = textBox.validator;
    textBox.validator = function() {return false;}
    textBox.validate();  
    textBox.validator = originalValidator;
    
  3. 或者同时做两件事。

答案 1 :(得分:3)

我认为您可以通过myVTB.displayMessage显示工具提示('这来自后端验证');方法

答案 2 :(得分:2)

您需要在验证器方法中进行验证。像这里http://docs.dojocampus.org/dijit/form/ValidationTextBox-tricks 您还需要关注小部件以显示消息! dijit.byId( “无所谓”)。对焦()

答案 3 :(得分:1)

使用新的dojo时,@ arber解决方案是最好的。只需记住在调用“displayMessage”方法之前将焦点设置为TextBox。 我正在使用dojo 1.10,其工作原理如下:

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

ValidationTextBox的Dojo引用guid:https://dojotoolkit.org/reference-guide/1.10/dijit/form/ValidationTextBox.html

答案 4 :(得分:0)

我知道这个问题很古老,但希望这会对某人有所帮助。是的,你应该使用验证器,但是如果你有理由不这样做,这将显示消息并使字段无效:

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

答案 5 :(得分:0)

您可以直接调用“私人”功能:

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

你得到的结果与@phusick建议的结果相同,但代码更少,可以说是更加直接和干净。

注意: _set可在基类ValidationTextBox上声明dijit/_WidgetBase

现场演示: 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;
    */
  });

});