dojo dijit.form.DateTextBox 约束不起作用,datetextbox

2024-06-20

嗨,我是 javascript 和 dojo 的新手。我正在尝试使用两个带有下拉日历的 dijit DateTextBox 来建立数据库查询的日期范围。一旦选择了开始日期或结束日期,我想限制可用的日期,以便不可能选择按时间顺序排列在开始日期之前的结束日期,反之亦然。我正在尝试应用此处 dojo 参考中名为“动态更改约束”的示例(大约在页面的一半处):http://dojotoolkit.org/reference-guide/dijit/form/DateTextBox.html http://dojotoolkit.org/reference-guide/dijit/form/DateTextBox.html但是,这些约束在我的代码中不起作用。我真正做的唯一不同的是使用tundra主题。任何建议将不胜感激。

<html>

<head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/resources/dojo.css">
  <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dijit/themes/tundra/tundra.css" media="screen" />
  <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js" data-dojo-config="isDebug: true, parseOnLoad: true"></script>

  <script type="text/javascript">
    dojo.require("dijit.form.DateTextBox");
  </script>
</head>

<body class="tundra">
  <div>
    <label for="fromDate">From:</label>
    <input id="fromDate" type="text" name="fromDate" data-dojo-type="dijit.form.DateTextBox" required="true" onChange="dijit.byId('toDate').constraints.min = arguments[0];" />
    <label for="toDate">To:</label>
    <input id="toDate" type="text" name="toDate" data-dojo-type="dijit.form.DateTextBox" required="true" onChange="dijit.byId('fromDate').constraints.max = arguments[0];" />

  </div>
</body>

</html>

使用新的、符合 HTML5 的属性data-dojo-type在 Dojo 1.6 中引入,小部件属性的解析方式也发生了变化(也在 HTML5 中进行验证)。小部件特定的属性现在位于名为的 HTML 属性中data-dojo-props,采用 JSON 样式语法。

要使您的示例再次工作,请将onChange (and required) in data-dojo-props(请注意,您必须在其周围包装一个函数):

 dojo.require("dijit.form.DateTextBox");
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/resources/dojo.css">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dijit/themes/tundra/tundra.css" media="screen" />
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.0/dojo/dojo.xd.js" data-dojo-config="isDebug: true, parseOnLoad: true"></script>


<body class="tundra">
  <label for="fromDate">From:</label>
  <input id="fromDate" type="text" name="fromDate" data-dojo-type="dijit.form.DateTextBox" data-dojo-props="onChange: function() {dijit.byId('toDate').constraints.min = arguments[0];}, required: true" />
  <label for="toDate">To:</label>
  <input id="toDate" type="text" name="toDate" data-dojo-type="dijit.form.DateTextBox" data-dojo-props="onChange: function() {dijit.byId('fromDate').constraints.min = arguments[0];}, required: true" />

或者你用旧的dojoType代替data-dojo-type,那么onChange属性将被解析。请注意,它不符合 HTML5,但在我看来更优雅。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dojo dijit.form.DateTextBox 约束不起作用,datetextbox 的相关文章

随机推荐