我的问题与#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;
}
如果我手动按下输入,我会看到键盘,但是当我使用编码时,它不会触发。
提前谢谢你, 棉结。
答案 0 :(得分:0)
焦点应该有效!不过试试这个&gt;的自动对焦强>
<Input id="inputQuant" type="Number" width="100%" autofocus
description="{inputDialogModel>/description}" value="1"/>