PhoneGap 2.0(Cordova)DatePicker插件'模式'-属性以获取日期和时间
PhoneGap 2.0 (Cordova) DatePicker PlugIn 'mode'-Property to get Date AND Time
今天,我开始使用DatePicker插件,用PhoneGap创建我的第一个(Android)应用程序。经过几个小时的调查,我已经开始工作了(感谢datePicker插件在Phonegap 2.0中不起作用),但我并不完全想要:
我有一个带有class="nativedatepicker" (date)
(jQuery点击事件的选择器)的输入,还有一个带class="nativetimepicker" (time)
的输入,所以我可以在第一个输入中选择日期,在第二个输入中可以选择时间。
是否可以将其合并为一个输入,在其中我可以一步选择日期和时间?我想我可以在这里的某个地方做这件事(插件中的一些JS):
window.datePicker.show({
date : myNewDate,
mode : 'date', // date or time or blank for both
allowOldDates : true
}
但当我将CCD_ 3留空时,它会抛出一个错误。
谢谢你的帮助!
如何将其留空?如果你做
mode : ,
由于JS对象需要为您指定的所有键指定一个值,因此会出现错误。你可以试试
mode : '',
不,目前使用当前android的DatePicker插件是不可能的,尽管他们说如果你将模式属性设置为空,你将同时获得这两个属性。您可以在DatePickerPlugin.java文件中看到它:
if (ACTION_TIME.equalsIgnoreCase(action)) { //mode is set to "time"
//plugin java code
} else if (ACTION_DATE.equalsIgnoreCase(action)) { //mode is set to "date"
//plugin java code
} else { //mode is blank
Log.d(pluginName, "Unknown action. Only 'date' or 'time' are valid actions");
return;
}
对于同时选择日期和时间的问题,我的解决方案是首先显示日期对话框,然后在成功回调中显示时间对话框。
代码如下:
var showDialog = function(mode, date, cb) {
window.plugins.datePicker.show({
date : date,
mode : mode
}, function(dateStr) {
cb(new Date(dateStr));
});
};
$('.nativedatepicker').click(function(e) {
e.preventDefault();
var currentField = $(this);
var oldDate = new Date(currentField.val()) || new Date();
//show the dialog to select the date
showDialog("date", oldDate, function(newDate) {
//we have a new date selected, copy time values from the old date for time dialog
newDate.setHours(oldDate.getHours());
newDate.setMinutes(oldDate.getMinutes());
//show the time dialog
showDialog("time", newDate, function(newDateTime) {
//now we have time selected, copy it to new date and update the field
newDate.setHours(newDateTime.getHours());
newDate.setMinutes(newDateTime.getMinutes());
currentField.val(newDate.toISOString());
});
});
return false;
});
这是我对DZL答案的替代解决方案。我将日期和时间连接到两个单独的按钮上,这两个按钮都可以更改同一日期:
var date = new Date();
var $date = $('#date_result');
var normalizeNumber = function(n){
var c = parseInt(n, 10);
return (c<10) ? "0"+c : c;
}
var normalizeTime = function(t){
var hours = t.getHours();
var minutes = t.getMinutes();
var meridiem = ' AM ';
if (hours > 12) {
hours -= 12;
meridiem = ' PM ';
} else if (hours === 0) {
hours = 12;
}
minutes = normalizeNumber(minutes);
return hours + ':' + minutes + meridiem;
}
$('#date-btn').on('click', function(event) {
var myNewDate = date;
if(typeof myNewDate === "number"){ myNewDate = new Date (myNewDate); }
window.plugins.datePicker.show({
date : myNewDate,
mode : 'date',
allowOldDates : true
}, function(returnDate) {
var newDate = new Date(returnDate);
newDate.setMinutes(date.getMinutes());
newDate.setHours(date.getHours());
date = newDate;
$date.val(newDate.toLocaleDateString() + ' ' + normalizeTime(newDate));
$date.blur();
});
});
$('#time-btn').on('click', function(event) {
var myNewTime = date;
if(typeof myNewTime === "number"){ myNewTime = new Date (myNewTime); }
plugins.datePicker.show({
date : myNewTime,
mode : 'time',
allowOldDates : true
}, function(returnDate) {
var newDate = new Date(returnDate);
newDate.setDate(date.getDate());
newDate.setMonth(date.getMonth());
newDate.setFullYear(date.getFullYear());
date = newDate;
$date.val(newDate.toLocaleDateString() + ' ' + normalizeTime(newDate));
$date.blur();
});
});
相关文章:
- 使& # 39;dom-if& # 39;根据另一个元素中的属性检查条件
- 为什么.property (& # 39; someProperty& # 39;);在ember.js的计算属性中使用
- 身体& # 39;宽度# 39;影响屏幕计算的属性
- & # 39;长度# 39;在迭代数组时属性未定义
- 有没有办法通过css 'left'和& # 39;顶部# 39;属性
- 设置& # 39;自动对焦# 39;属性,JavaScript不工作
- 做& # 39;变量# 39;有属性
- 指定& # 39;标签# 39;和& # 39;价值# 39;属性
- 安贝# 39;s & # 39;观察# 39;抛出断言错误,而计算属性不会
- 如何指定'x'和& # 39;y # 39;通过JavaScript创建和附加的textNode的属性
- 为什么我得到错误'不能设置属性'0'未定义# 39;
- 使用& # 39;这个# 39;选择属性,然后与选定的HTML属性进行比较
- 有没有办法给予'重要# 39;到控制器中的CSS属性
- 继承& # 39;类# 39;属性
- javascript:;& #39;和“javascript:“;在href属性
- & # 39;指定“type"video/mp4"属性不支持'在Firefox中使用Vide
- & # 39;调用者# 39;和& # 39;参数# 39;是受限制的函数属性,不能在此上下文中访问
- 设置HTML
- 安贝& # 39;需要# 39;属性不能工作,除非你先访问所需的控制器路由
- 骨干& # 39;改变:属性# 39;有时不捆绑