修改 wm.Number 编辑器小部件上的 rangeMes​​sage

Modifying rangeMessage on wm.Number editor widget

我有一个 WaveMaker 6.7 应用程序,我需要在其中更改 rangeMes​​sage 属性 的 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 对象以便它获取最新文本??

谢谢!!

可以正常使用了,虽然还不是很干净... 在网络浏览器中使用 inspect 我找到了 'flowStdEditor' wavemaker 对象的 dijit ID。为此,我输入了一个超出范围的值,右键单击工具提示并选择 'inspect element'。它向我展示了工具提示的 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);
    }