0
請建議如何從時間下拉列表中隱藏過去的時間,在每個下拉列表中顯示小時和分鐘。 我的要求是,根據用戶選擇的日期,過去時間不應顯示在小時和分鐘下拉列表中或過去時間可以禁用,以便用戶無法選擇過去的時間,如在http://jsfiddle.net/8o23tbLu/13/中的時間字段中所做的那樣 下面是示例代碼:禁用時間下拉列表
<script>
require(["dojo/_base/declare", "dijit/form/DateTextBox", "dojo/date/locale", "dojo/dom", "dojo/_base/lang", "dijit/registry", "dojo/ready", "dojo/domReady!", "dijit/form/TimeTextBox", "dojo/parser"],
function (declare, DateTextBox, locale, dom, lang, registry, ready) {
var pad, update_current_available_times, get_hour_string;
pad = function (n) {
n = n + '';
return n.length >= 2 ? n : new Array(2 - n.length + 1).join('0') + n;
},
get_hour_string = function (t) {
var hour = pad(t.getHours());
var minute = pad(t.getMinutes());
return 'T' + hour + ':' + minute + ':00'; //current time 1
},
update_current_available_times = function (seldate) {
var useMin, now, time, pad;
if (typeof seldate === 'undefined') {
seldate = new Date(document.getElementsByName('userDate')[0].value);
}
useMin = 'T00:00:00';
now = new Date();
if ((now.getDate() === seldate.getDate()) && (now.getYear() === seldate.getYear()) && (now.getMonth() === seldate.getMonth())) {
useMin = get_hour_string(now);
}
time = registry.byId("time");//user selected time
alert("time: " + time);
time.set("constraints", lang.mixin(time.get("constraints"), {
min: useMin
}));
};
declare("OracleDateTextBox", DateTextBox, {
oracleFormat: {
selector: 'date',
datePattern: 'dd-MMM-yyyy',
locale: 'en-us'
},
value: document.getElementsByName('userDate')[0].value, // prevent parser from trying to convert to Date object
postMixInProperties: function() { // change value string to Date object
this.inherited(arguments);
// convert value to Date object
this.value = locale.parse(this.value, this.oracleFormat);
this.set('constraints', {
min: new Date(),
required: true
// datePattern: 'dd-MMM-yyyy'
});
},
// To write back to the server in Oracle format, override the serialize method:
serialize: function (dateObject, options) {
return locale.format(dateObject, this.oracleFormat).toUpperCase();
}
});
new OracleDateTextBox({
name: "oracle",
required: true,
onChange: function (v) {
update_current_available_times(v);
setTimeout(showServerValue, 0);
}
}, "oracle").startup();
ready(function() {
// Set the current time when starting up
var time = registry.byId("time");
time.setValue(document.getElementsByName('userTime')[0].value);
update_current_available_times();
});
});
</script>
請找到該代碼http://jsfiddle.net/8o23tbLu/13/。謝謝。
+1,抱歉打擾bu首先,如果我選擇當前小時,過去的幾分鐘被禁用,並且如果我重新選擇小時,但仍然在分鐘下拉列表中,分鐘被禁用,它們都應該被啓用,因爲我們已經選擇了第二次未來的時間請建議。 @Venkata Panga。 – user3684675 2014-10-07 01:51:08
是的,但給出一個想法,我剛剛給了一個工作,以禁用過去的時間和另一種情況下選擇日期後禁用過去的小時和分鐘。
明天我會看看你的未來分鐘的情況:) – 2014-10-07 04:28:00
我試過,並禁用過去幾個小時,請參閱http://jsfiddle.net/8o23tbLu/18/。我無法從分鐘下拉列表中禁用過去的分鐘數。工作示例http://jsfiddle.net/8o23tbLu/18/。謝謝@Venkata Panga – user3684675 2014-10-07 17:02:23