javascript - dojo.ById 不工作

标签 javascript dojo xpages

我有一个工作正常的日历小部件。我遇到的问题是选择日期时 - 代码找不到我想要设置为所选日期的字段,而且我不明白为什么不这样做。

    <xp:panel id="calendarHolder">
        <script>
            require([ "dijit/Calendar", "dojo/date", "dojo/domReady!", "dijit/registry" ],
            function(Calendar, date){ 
            new Calendar({ value: new Date(),

            onValueSelected: function(date){calendarDateClicked(date);
                    }},"mycal");

            //Set month in correct format
            function setMonth(month){
                switch(month)
                {
                case 1:
                month = "Jan";
                break;
                case 2:
                month = "Feb";
                break;
                case 3:
                month = "Mar";
                break;
                case 4:
                month = "Apr";
                break;
                case 5:
                month = "May";
                break;
                case 6:
                month = "Jun";
                break;
                case 7:
                month = "Jul";
                break;
                case 8:
                month = "Aug";
                break;
                case 9:
                month = "Sep";
                break;
                case 10:
                month = "Oct";
                break;
                case 11:
                month = "Nov";
                break;
                case 12:
                month = "Dec";
                break;
                }
                return month;
            }
            //create Click action
            function calendarDateClicked(date){
                var d = new Date(date);

                var month = (d.getMonth() + 1);
                month = setMonth(month);
                var day = '' + d.getDate() + ",";
                var year = d.getFullYear();

                var dateString = [month,day,year].join(" ");

        dojo.byId('#{id:hiddenCalWidgetSelectedDate}').value = dateString

                dojo.byId('#{id:calDate}').value = dateString;
                XSP.partialRefreshPost("#{id:mainPanel}",{
                    onComplete: function() {
                        XSP.partialRefreshGet("#{id:sideViews}", {});
                    }
                });//Post Value to server
            }

             });
        </script>

        <div id="mycal">
        </div>
        <div id="textbox">
        <xp:inputText id="hiddenCalWidgetSelectedDate"
                style="display:block;" value="#{sessionScope.selectedDate}">
                <xp:this.defaultValue><![CDATA[#{javascript://
var d = new Date(/*Today*/);
var month = '' + (d.getMonth() + 1);
var day = '' + d.getDate();
var year = d.getFullYear();

    if (month.length < 2) month = '0' + month;
    if (day.length < 2) day = '0' + day;

    return [day,month,year].join("/");  }]]></xp:this.defaultValue>
</xp:inputText></div>
</xp:panel>

我得到的错误是 dojo.byId('#{id:hiddenCalWidgetSelectedDate}') 为 null

如有任何帮助,我们将不胜感激。

格雷姆

最佳答案

如果您向 XPage 添加普通的脚本 block ,EL 将不会得到解析。

您必须将代码添加到 xp:scriptBlock 中。

关于javascript - dojo.ById 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22538705/

相关文章:

javascript - 将旋转从父级 Object3D 传输到子级 - 三个 js

javascript - 在 typescript 中扩展方法

javascript - 主题上的 rxjs debounceTime

javascript - Dojo 有编码标准吗?

javascript - DOJO:DataGrid 增量加载不起作用

javascript - 添加到 Ruby on Rails 元素的 CSS 和 JS 文件在生产中不可用

php - jQuery(或任何网络工具)嵌套表达式生成器

java - 在Java中读取sessionScope变量?

twitter-bootstrap-3 - 将 SSJS 操作添加到引导药丸中

javascript - 如何转义数据库路径