我有一个 WaveMaker 6.7 应用程序,我需要更改 rangeMessage 属性的 dojo ToolTip 对象。例如,下面的 JavaScript 更改了 wavemaker 数字编辑器小部件的“rangeMessage”属性:
var page = wm.getPage('Main');
page["flowStdEditor"].setValue('rangeMessage','New Range Message Text');
alert(page["flowStdEditor"].rangeMessage); // Shows 'New Range Message Text' set above
在输入超出范围的数字的数据输入时,我仍然收到应用程序首次在客户端 Web 浏览器中启动时的旧“rangeMessage”。关于如何动态更改数字编辑器小部件上的“rangeMessage”属性有什么想法吗?或者在更改“rangeMessage”属性后,如何刷新 dojo ToolTip 对象以便它获取最新的文本?
谢谢!!
最佳答案
已经可以工作了,虽然还不是完全干净...... 使用 Web 浏览器中的检查,我找到了“flowStdEditor”wavemaker 对象的 dijit ID。我通过输入超出范围的值,右键单击工具提示并选择“检查元素”来完成此操作。它向我展示了工具提示的 HTML:
<input aria-invalid="false" style="height: 20px; line-height: 20px;" value="" aria-required="true" aria-disabled="false" aria-valuemax="99.99" aria-valuemin="14.16" tabindex="0" id="dijit_form_NumberTextBox_14" aria-valuenow="88888888888" class="dijitReset dijitInputInner" dojoattachpoint="textbox,focusNode" autocomplete="off" type="text">
我在 html 中使用 id
id="dijit_form_NumberTextBox_14" 执行以下操作:
var flowStdNumBox = dijit.byId("dijit_form_NumberTextBox_14");
alert('flowStdNumBox ' + flowStdNumBox.get("rangeMessage")); // Shows old message
flowStdNumBox.set("rangeMessage",'New Range Message Text');
alert('flowStdNumBox ' + flowStdNumBox.get("rangeMessage")); //Shows new message
一切看起来都正常,当我在数字编辑器小部件中输入超出范围的数字时,它现在显示新消息“新范围消息文本”。
我不喜欢的是在我的应用程序中对“dijit_form_NumberTextBox_14”进行硬编码。有谁知道如何检索 WaveMaker wm.number 编辑器小部件的 dijit.id 吗? (已更新!!见下文)
这将检索我以编程方式更改工具提示所需的内容。它将抓取上面示例中的“dijit_form_NumberTextBox_14”。
var tmp = page[componentName].domNode.childNodes.item(1).attributes.getNamedItem('widgetid');
下面是一些循环遍历所有 wavemaker 页面组件以查找“rangeMessage”和“invalidMessage”属性的代码:
try {
var page = wm.getPage('Main').components;
for(var componentName in page) {
if (typeof page[componentName].domNode != 'undefined') {
if (page[componentName].domNode.childNodes.length >= 2) {
var tmp = page[componentName].domNode.childNodes.item(1).attributes.getNamedItem('widgetid');
if (tmp !== null) {
var id = tmp.value;
var dojoObj = dijit.byId(id);
var rngMsg = dojoObj.get("rangeMessage");
var invalidMsg = dojoObj.get("invalidMessage");
if (typeof rngMsg != 'undefined') {
var compRange = compRngMsg(componentName); // Lookup to see if component has a special range message to use
if (compRange !== null) {
dojoObj.set("rangeMessage",compRange); // Overrides generic rangeMessage set by langTxtRangeMsgVariable
page[componentName].rangeMessage = compRange;
if (debugging) { console.log('Overriding generic rangMessage for ' + componentName + ' to "' + compRange + '"'); }
} else {
dojoObj.set("rangeMessage",app.langTxtRangeMsgVariable.getValue("dataValue"));
page[componentName].rangeMessage = app.langTxtRangeMsgVariable.getValue("dataValue");
if (debugging) { console.log('Setting generic rangMessage for ' + componentName + ' to "' + app.langTxtRangeMsgVariable.getValue("dataValue") + '"'); }
}
}
if (typeof invalidMsg != 'undefined') {
if (invalidMsg !== '$_unset_$') {
var compInvalid = compInvalidMsg(componentName); // Lookup to see if component has a special range message to use
if (compInvalid !== null) {
dojoObj.set("invalidMessage",compInvalid); //Override generic message for component
page[componentName].invalidMessage = compInvalid;
if (debugging) { console.log('Overriding generic invalidMessage for ' + componentName + ' to "' + compInvalid + '"'); }
} else {
dojoObj.set("invalidMessage",app.langTxtInvalidMsgVariable.getValue("dataValue")); //Set generic invalid message
page[componentName].invalidMessage = app.langTxtInvalidMsgVariable.getValue("dataValue");
if (debugging) { console.log('Setting generic invalidMessage for ' + componentName + ' to "' + app.langTxtInvalidMsgVariable.getValue("dataValue") + '"'); }
}
}
}
if (debugging) { console.log(componentName + ' - id: ' + id + ' rngMsg: ' + rngMsg + ' invalideMsg: ' + invalidMsg); }
}
} else {
if (debugging) { console.log('Skipping ' + componentName); }
}
}
}
if (debugging) { console.log('Completed setting generic messages'); }
} catch(errC) {
var msg = 'languageDataVariableResult: Error encounted during generic message converions! ' + errC;
console.log(msg);
app.toastWarning(msg);
}
关于javascript - 修改 wm.Number 编辑器小部件上的 rangeMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32334761/