Управих събитието за отмяна, като модифицирах малко плъгина .java: след кода
public void run() {
final DateSetListener dateSetListener = new DateSetListener(datePickerPlugin, callBackId);
final DatePickerDialog dateDialog = new DatePickerDialog(currentCtx, dateSetListener, mYear,mMonth, mDay);
Добавих събитието, за да уловя отмяната:
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 успях да променя фокусираното събитие на докосване, както следва (използвам приставката на мобилно устройство, което има TAP събития:
$('.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();
}
});
});
Надявам се да мога да помогна.
person
Andrea Gallucci
schedule
13.04.2013