Javascript 修改wm.Number编辑器小部件上的rangeMessage

Javascript 修改wm.Number编辑器小部件上的rangeMessage,javascript,dojo,wavemaker,Javascript,Dojo,Wavemaker,我有一个WaveMaker 6.7应用程序,需要更改rangeMessage属性的dojo工具提示对象。例如,下面的javascript更改wavemaker数字编辑器小部件的“rangeMessage”属性: var page = wm.getPage('Main'); page["flowStdEditor"].setValue('rangeMessage','New Range Message Text'); alert(page["flowStdEditor"].rangeMessage

我有一个WaveMaker 6.7应用程序,需要更改rangeMessage属性的dojo工具提示对象。例如,下面的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工具提示对象,使其拾取最新文本


谢谢

让它工作了,虽然它不是完全干净的。。。 使用web浏览器中的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">
一切正常,当我在数字编辑器小部件中输入超出范围的数字时,它现在显示新消息“新范围消息文本”

我不喜欢的是在我的应用程序中硬编码'dijit_form_NumberTextBox_14'。有人知道为WaveMaker wm.number editor小部件检索dijit.id的方法吗??(更新!!见下文)

这将检索以编程方式更改工具提示所需的内容。它将抓取上面示例中的“dijit\u form\u NumberTextBox\u 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);
    }

让它工作,虽然它不是完全干净。。。 使用web浏览器中的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">
一切正常,当我在数字编辑器小部件中输入超出范围的数字时,它现在显示新消息“新范围消息文本”

我不喜欢的是在我的应用程序中硬编码'dijit_form_NumberTextBox_14'。有人知道为WaveMaker wm.number editor小部件检索dijit.id的方法吗??(更新!!见下文)

这将检索以编程方式更改工具提示所需的内容。它将抓取上面示例中的“dijit\u form\u NumberTextBox\u 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);
    }