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???
任何帮助都很感激。
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;
或者同时做这两件事。
z3yyvxxp2#
我认为您可以通过myVTB显示工具提示。displayMessage(“这来自后端验证”);方法
hivapdat3#
你需要在validator-method中进行验证。像这里http://docs.dojocampus.org/dijit/form/ValidationTextBox-tricks你也需要聚焦小部件来显示消息!dijit.byId(“whatever”).focus()
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
2w3rbyxf5#
我知道这个问题已经过时了,但希望这能帮助到一些人。是的,你应该使用验证器,但是如果你有理由不这样做,这将显示消息并使字段无效:
function(textbox, state /*"Error", "Incomplete", ""*/, message) { textbox.focus(); textbox.set("state", state); textbox.set("message", message); }
vc9ivgsu6#
您可以直接调用“private”函数:textBox._set('state', 'Error');您可以得到与@phusick建议的相同的结果,但代码更少,而且可以说是以一种更直接、更干净的方式。注:_set可用于ValidationTextBox,正如在其基类dijit/_WidgetBase上声明的那样。实时演示:http://jsfiddle.net/gibbok/kas7aopq/
textBox._set('state', 'Error');
_set
ValidationTextBox
dijit/_WidgetBase
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; */ }); });
6条答案
按热度按时间ar5n3qh51#
在jsFiddle上观看它的实际应用。
1.仅显示工具提示:
1.临时切换textBox验证器,强制验证,恢复原始验证器:
或者同时做这两件事。
z3yyvxxp2#
我认为您可以通过myVTB显示工具提示。displayMessage(“这来自后端验证”);方法
hivapdat3#
你需要在validator-method中进行验证。像这里http://docs.dojocampus.org/dijit/form/ValidationTextBox-tricks你也需要聚焦小部件来显示消息!dijit.byId(“whatever”).focus()
4ngedf3f4#
@arber解决方案在使用新的dojo时是最好的。只需记住在调用“displayMessage”方法之前将焦点设置为TextBox。我使用的是dojo 1.10,其工作原理如下:
验证文本框的Dojo引用GUID:https://dojotoolkit.org/reference-guide/1.10/dijit/form/ValidationTextBox.html
2w3rbyxf5#
我知道这个问题已经过时了,但希望这能帮助到一些人。是的,你应该使用验证器,但是如果你有理由不这样做,这将显示消息并使字段无效:
vc9ivgsu6#
您可以直接调用“private”函数:
textBox._set('state', 'Error');
您可以得到与@phusick建议的相同的结果,但代码更少,而且可以说是以一种更直接、更干净的方式。
注:
_set
可用于ValidationTextBox
,正如在其基类dijit/_WidgetBase
上声明的那样。实时演示:http://jsfiddle.net/gibbok/kas7aopq/