如何使用Dijit DateTextBox显示和验证自定义格式?

时间:2017-09-27 16:14:10

标签: javascript date dojo dijit.form

我想更改dijit dateTextBox日期的显示格式 目前我的日期显示如下

enter image description here

我的声明是这样的

<input type="text" data-dojo-type="dijit/form/DateTextBox" data-dojo-attach-point="theInput"  />

但我想将格式更改为我想要的任何格式,例如2017年9月14日或2017年9月14日。

如果使用键盘输入格式,是否可以针对相同的格式进行验证 - 即。当用户输入数据时,它必须采用该格式,否则将显示无效消息。

修改: 我所能找到的只是提到了允许你设置输入约束和格式化的约束 - 但是文档中没有例子如何使用它。很高兴看到声明性和程序化的例子。

enter image description here

此外,根据声明性标记中的其他一些帖子,您可以指定约束,如

data-dojo-props="constraints:{datePattern:'yyyy-MM'}" 

但是我想以编程方式执行此操作,但是当我检查输入对象时

this.theInput.constraints 

没有datePattern,或min和max。

这样的属性

1 个答案:

答案 0 :(得分:4)

程序代码和声明代码都是可能的:

  1. 用于声明性示例:
  2. 将你的模式,min,max放在约束道具中,如:

    <input type="text" name="shortYear" data-dojo-type="dijit/form/DateTextBox" data-dojo-props="constraints:{datePattern: 'MM-dd-yyyy',min:'2016-12', max:'2018-06'}" value="09-14-2017" required="true" />
    

    见工作小提琴

    require(["dijit/form/DateTextBox","dojo/parser", "dijit/form/Button","dojo/on" ,
      "dojo/domReady!"
    ], function(DateTextBox,parser,Button, On ) {
    		parser.parse();
    });
    <link href="https://ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet"/>
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
    <body class="claro">
    <input type="text" name="shortYear" data-dojo-type="dijit/form/DateTextBox" data-dojo-props="constraints:{datePattern: 'MM-dd-yyyy',min:'2017-09-03', max:'2018-01-01'}" value="09-14-2017" required="true" />
    </body>

    FIddle

    1. 用于编程示例:
    2. 您只是用来直接访问约束对象并在那里设置约束值Mydateinput.constraints.contName = value,如

      myDateBox.constraints.datePattern  = 'MM-dd-yyyy'
      myDateBox.constraints.min = new Date();
      myDateBox.constraints.max = new Date("yyyy-MM-dd")
      

      参见工作代码段

      require(["dijit/form/DateTextBox", "dijit/form/Button","dojo/on" ,
        "dojo/domReady!"
      ], function(DateTextBox,Button, On ) {
      		datebox = new DateTextBox({
          }, "date");
          datebox.constraints.datePattern = 'MM-dd-yyyy';
          
          datebox.constraints.min = new Date("2017/09/03");
          datebox.constraints.max = new Date("2018/01/01")
          
          datebox.startup();
      });
      <link href="https://ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet"/>
      <script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
      
      <body class="claro">
        <div id="date" ></div>
      </body>

      Fiddle