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

kmpatx3s  于 2022-12-16  发布在  Dojo
关注(0)|答案(6)|浏览(172)

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???

任何帮助都很感激。

ar5n3qh5

ar5n3qh51#

jsFiddle上观看它的实际应用。
1.仅显示工具提示:

var textBox = bijit.byId("validationTextBox");
dijit.showTooltip(
    textBox.get("invalidMessage"), 
    textBox.domNode, 
    textBox.get("tooltipPosition"),
    !textBox.isLeftToRight()
);

1.临时切换textBox验证器,强制验证,恢复原始验证器:

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

或者同时做这两件事。

z3yyvxxp

z3yyvxxp2#

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

hivapdat

hivapdat3#

你需要在validator-method中进行验证。像这里http://docs.dojocampus.org/dijit/form/ValidationTextBox-tricks你也需要聚焦小部件来显示消息!dijit.byId(“whatever”).focus()

4ngedf3f

4ngedf3f4#

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

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

验证文本框的Dojo引用GUID:https://dojotoolkit.org/reference-guide/1.10/dijit/form/ValidationTextBox.html

2w3rbyxf

2w3rbyxf5#

我知道这个问题已经过时了,但希望这能帮助到一些人。是的,你应该使用验证器,但是如果你有理由不这样做,这将显示消息并使字段无效:

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

vc9ivgsu6#

您可以直接调用“private”函数:
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;
    */
  });

});

相关问题