.java プラグインを少し変更してキャンセル イベントを管理しました: コードの後に
public void run() {
final DateSetListener dateSetListener = new DateSetListener(datePickerPlugin, callBackId);
final DatePickerDialog dateDialog = new DatePickerDialog(currentCtx, dateSetListener, mYear,mMonth, mDay);
cancel をトラップするイベントを追加しました。
dateDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
if (which == DialogInterface.BUTTON_NEGATIVE) {
datePickerPlugin.success(new PluginResult(PluginResult.Status.NO_RESULT, ""), callBackId);}}});
これにより、キャンセル ボタンが押されたときに日付が "" に設定されます。JavaScriptコードでは、次のようにフォーカスイベントをタップイベントに変更することができました(タップイベントを持つモバイルでプラグインを使用します:
$('.nativedatepicker').bind('tap',function(event) {
var currentField = $(this);
console.log(currentField.val());
var myNewDate = Date.parse(currentField.val()) || new Date();
if(typeof myNewDate === "number"){ myNewDate = new Date (myNewDate); }
//myNewDate = currentField.val();
console.log("inside native date picker " + event);
// Same handling for iPhone and Android
window.plugins.datePicker.show({
date : myNewDate,
mode : 'date', // date or time or blank for both
allowOldDates : true
}, function(returnDate) {
console.log("ret date" + returnDate);
if (returnDate)
{
var newDate = new Date(returnDate);
currentField.val(returnDate);
// This fixes the problem you mention at the bottom of this script with it not working a second/third time around, because it is in focus.
currentField.blur();
}
});
});
お役に立てれば幸いです。