6

我正在使用 Cordova/PhoneGap 2.5.0、Knockout 2.1.0 和 jQuery Mobile 1.3.0 创建一个 Android 应用程序。

我创建了一个“数字”类型的输入,这个输入是数据绑定的,它的值是 Knockout。它还数据绑定到按键事件。我打算抓住用户enter按键。

<input type="number" data-bind="value: $root.myInputValue, event: { keypress: $root.myInputKeypress }" min="0" step="1" max="29">


self.myInputKeypress = function() {
    var keyCode = (event.which ? event.which : event.keyCode);

    alert(keyCode);

    if (keyCode === 13) {
        //Do work here

        return false;
    }

    return true;
};

当我按下允许的键(例如数字)时,代码会按预期运行,并且按下的键代码会收到警报。当我按下enter键盘时没有任何反应,似乎 Android 正在抑制它认为不相关的键的事件。

有没有办法改变这种行为,以便我可以捕捉到用户的点击enter

4

4 回答 4

1

如果您使用的是Ionic/Angular

<input ng-keypressed="myKeyPressed($event)" ng-model="myField">

self.myKeyPressed = function(keyEvent) {
    if(keyEvent.keyCode == 13) //do things
}
于 2016-07-08T07:46:21.607 回答
0

嗨把你的文本框放在表单标签中

 <form id="Articleform" name="Article">
                          <input type="number" data-bind="value: $root.myInputValue, event: { keypress: $root.myInputKeypress }" min="0" step="1" max="29">
                        </form>

并添加事件表单提交标签

$(document).ready(function () {
    $("#Articleform").on('submit', function (event) {
        alert("enter");
        return false;
    });

当您单击 go 时,警报已打开

于 2014-06-26T11:36:33.870 回答
0

试试这个可以在你的情况下使用 jquery mobile

$('.ui-input-text').live('keyup', function(event) {
if (event.keyCode == 13) {
    // 'Go' pressed do something
}});
于 2014-06-26T10:58:14.900 回答
0

我有同样的问题,问题是数字字段,我的设备上的输入键码是 9,在模拟器上是 13。

这对我有用:

$('.ui-input-text').live('keyup', function(event) {
if (event.keyCode == 9) {
    // 'Go' pressed do something
}});
于 2015-10-12T11:58:26.773 回答