.focus()和原生键盘没有激活

时间:2015-05-29 12:28:21

标签: android cordova sapui5

我的问题与#34;焦点()"在Cordova内的SAPUI5 Web应用程序中的输入字段上。

这是我使用的代码。

sap.ui.getCore().byId("inputQuant").focus()

我甚至尝试了以下

setTimeout(function() { sap.ui.getCore().byId("inputQuant").focus() },3000);

jQuery.sap.delayedCall(0, this, function() {
                      sap.ui.getCore().byId("inputQuant").focus();});

但是原生的Android键盘不是"引人入胜的"。根据JQuery标准,输入是集中的,但不是从设备的角度来看。

有没有办法操纵这个?

我想要做的是:在现有的屏幕上,我调用一个函数来打开一个对话框。对话框打开后,我应该关注输入字段并弹出设备的键盘。

以下是我创建对话框的方法:

function getInputDialog(objParameters){
        title       = objParameters.title;
        description = objParameters.description;
        contentText = objParameters.contentText;
        to          = objParameters.to;
        context     = objParameters.context;
        model       = objParameters.model;
        value       = objParameters.value;

        var app = sap.ui.getCore().byId("App--app");
        var myDialog = sap.ui.getCore().byId('inputDialog');
        if(myDialog == undefined){
            var xml = '' +
        '<Dialog id="inputDialog" xmlns="sap.m" title="{inputDialogModel>/title}">                                  ' +
        '   <content>                                                                                               ' +
        '   <FlexBox alignItems="Center" justifyContent="Center">                                                   ' +
        '       <Label text="{inputDialogModel>/contentText}" />                                                    ' +
        '   </FlexBox>                                                                                              ' +
        '   <FlexBox alignItems="Center" justifyContent="Center">                                                   ' +
        '       <Input  id="inputQuant" type="Number" width="100%"                                                  ' +
        '               description="{inputDialogModel>/description}" value="1"/>                                   ' +
        '   </FlexBox>                                                                                              ' +
        '   </content>                                                                                              ' +
        '   <buttons>                                                                                               ' +
        '       <Button text="{inputDialogModel>/actionText2}" press="closeDialog2"/>                               ' +
        '       <Button text="{inputDialogModel>/actionText1}" press="closeDialog1"/>                               ' +
        '   </buttons>                                                                                              ' +
        '</Dialog>                                                                                                  ';
        // create some dummy JSON data and create a Model from it
        var data = {
            title:          title, //"Introduceti o cantitate",
            description:    description, //"buc",
            contentText:    contentText, //"Some Fragment Content",
            actionText1:    "Confirma",
            actionValue1:   to, //
            actionText2:    "Renunta",
            model:          model
        };

        // create a dummy Controller for the action in the Dialog
        var oDummyController = {
            onAfterRendering: function(){
                setTimeout(function() { sap.ui.getCore().byId("inputQuant").focus() },2000);
                jQuery.sap.delayedCall(0, this, function() {
                      sap.ui.getCore().byId("inputQuant").focus();});
            },
            onBeforeShow: function(){
            setTimeout(function() { sap.ui.getCore().byId("inputQuant").focus() },2000);
            jQuery.sap.delayedCall(0, this, function() {
                  sap.ui.getCore().byId("inputQuant").focus();});
        },
            closeDialog2: function(){
                myDialog.close();
            },
            closeDialog1: function(){
                    //Update model with new value for quant
                    context.getModel(model).updateBindings();
                    myDialog.close();
                    app.to(to);
                } else {
                    var oModeli18n = new sap.ui.model.resource.ResourceModel({
                        bundleUrl: "i18n/i18n.properties"
                        });
                    sap.m.MessageToast.show(oModeli18n.getProperty("Pop_up_add_quantity"));
                }
            }
        };

        // instantiate the Fragment if not done yet
                myDialog = sap.ui.xmlfragment({fragmentContent:xml}, oDummyController);

                var oModel = new sap.ui.model.json.JSONModel();
                oModel.setData(data);
                myDialog.setModel(oModel, "inputDialogModel");
            }
        sap.ui.getCore().byId("inputQuant").setValue(value);
        sap.ui.getCore().byId("inputQuant").focus();
        return myDialog;
    } 

如果我手动按下输入,我会看到键盘,但是当我使用编码时,它不会触发。

提前谢谢你, 棉结。

1 个答案:

答案 0 :(得分:0)

焦点应该有效!不过试试这个&gt;的自动对焦

   <Input  id="inputQuant" type="Number" width="100%" autofocus
description="{inputDialogModel>/description}" value="1"/>