禁用dijit.form.DateTextBox中的手动输入

Disabling manual input in dijit.form.DateTextBox

本文关键字:手动输入 DateTextBox dijit form 禁用      更新时间:2023-09-26

我只想让日历指定我的文本框输入,而不允许在我的日历文本框中键入键盘数字,在dijit.form.DateTextBox中。有什么办法吗?

谢谢。

可以使用以下代码将DateTextBox设置为只读:

<input data-dojo-type="dijit/form/DateTextBox" 
       data-dojo-id="effectiveDate" 
       type="text" 
       name="effectiveDate" 
       id="effectiveDate" 
       data-dojo-props="'readonly': 'readonly'"/>

@Sudhir:如果你将小部件设置为禁用,那么你也不能在日历上选择日期。

Try this:

dojo.ready(function(){
    dojo.connect(dijit.byId("yourcalendarid"), "onKeyPress", function(evt){
        dojo.stopEvent(evt);
    });             
});

我实际上最后使用了其他东西-这是我的解决方案:

dojo.addOnLoad(function () {
            dojo.query(".dijitDateTextBox input[role='textbox']").forEach(function (node, index, arr) {
                node.setAttribute('readonly', 'readonly');
            });
        });

通过将我需要的元素设置为"只读",我得到了想要的效果。我在我的页面加载中执行这个,我不确定开销,但重点是,它有效。

您可以在输入中添加disabled参数:

<>之前之前

希望有所帮助

在扩展小部件中更新来自MrZombie的答案,您可以添加:

 //to disable input from user at the textbox.s
                        startup:function(){
                            this.inherited(arguments);
                            dojo.connect(this, "onKeyPress", function(evt){
                                dojo.stopEvent(evt);
                            });   
                        },

小部件启动时

您可以使用两个选项来禁用dojo日期输入元素。

1)使用setDisabled(true)方法

dijit.byId('id').setDisabled(true); 

2)直接设置disable属性。(你需要禁用这两个元素)

dijit.byId(id).disabled = true;
dijit.byId(id).textbox.disabled = true;