【问题标题】:datepicker plugin phonegap cancel buttondatepicker 插件 phonegap 取消按钮
【发布时间】:2013-01-03 23:21:59
【问题描述】:

我使用下一个 datePicker 插件:

https://github.com/phonegap/phonegap-plugins/tree/master/Android/DatePicker

如何识别用户何时按下“取消”按钮?:

控制器图片:http://goo.gl/YUzus

我使用的代码是:

window.plugins.datePicker.show({                        
    date : new Date(date),
    mode : 'date',
    allowOldDates : true    
},function(selectedDate) { 
    console.log('SET button was pressed');      
});

谢谢

【问题讨论】:

    标签: android jquery datepicker phonegap-plugins


    【解决方案1】:

    我管理了取消事件,稍微修改了 .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();
                        }
                });
            });
    

    希望能帮到你。

    【讨论】:

    • 我必须添加 import android.content.DialogInterface;也到文件的顶部
    • 并使用了 callbackContext.success("");而不是 datePickerPlugin.success
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多