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

时间:2011-12-04 16:12:18

标签: javascript dojo

我想只让日历指定我的文本框输入,而不允许在我的日历文本框中的dijit.form.DateTextBox中使用键盘打孔的数字。有没有办法做到这一点?

感谢。

6 个答案:

答案 0 :(得分:6)

以下代码可用于DateTextBox只读:

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

答案 1 :(得分:3)

@Sudhir:如果您将小部件设置为已禁用,则您无法在日历上选择日期。

试试这个:

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

答案 2 :(得分:2)

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

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

        });

通过将我需要的元素设置为“只读”,我得到了所需的效果。我在页面加载时执行此操作,我不确定开销,但重点是,它可以工作。

答案 3 :(得分:0)

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

<input type="text" name="startDate" dojoType="dijit.form.DateTextBox" 
  constraints="{datePattern:'MM/dd/yyyy'}"  
  value='' disabled
  validate='return true;'
/>

希望有所帮助

答案 4 :(得分:0)

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

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

                        },

在小部件启动时。

答案 5 :(得分:0)

有两个选项可用于禁用dojo日期输入元素。

<强>代码

1)使用setDisabled(true)方法

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

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

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