如何在jquery mobile中获取在搜索字段(type = search)中写入的文本?

时间:2014-03-18 09:06:55

标签: jquery jquery-mobile cordova

我想在移动键盘上按下“go”按钮后从搜索文本字段中获取书面文字。

<input id="search" value="" type="search" name="search">

这是javascript代码。

$("input[data-type='search']").keyup(function (e) {
alert("pressed");
var code = (e.keyCode ? e.keyCode : e.which);
alert(code);
if (code == 13) {     //for "go" key
    //alert("pressed");
    alert($(this).val());
    $(this).trigger("keyup");
}
});

我无法在搜索字段中输入输入的文字。我在logcat中得到“unsizeChanged:Enter,Ignore this event”。我希望成功测试的解决方案。谢谢。

4 个答案:

答案 0 :(得分:1)

我得到了解决方案。我通过以下方式修改我的代码:

$(document).on("pagecreate", function() { /* or pageinit for jQM 1.3 */
  $("[data-type='search']").on("keyup", function(e) {
    var code = e.keyCode || e.which;
    var text;
    if (code == 13) {
       text = $(this).val();
       alert(text);
    }
    else {
       return 1;  //this section avoid alert popouts, when other keys are pressed..
    }
  });
});

答案 1 :(得分:0)

我认为你应该稍微改变你的选择器:

$("input[data-type='search']").keyup(function (e) {

改为:

$("input[type='search']").keyup(function (e) { // type=search

或者如果您的元素的ID是唯一的,那么您可以尝试:

$("#search").keyup(function (e) { // as id is unique so change the selector
    alert("pressed");
    var code = e.keyCode || e.which; // instead of ternary use it this way.
    alert(code);
    if (code === '13') {  //use "===" equals for strict check.
       //alert("pressed");
       alert($(this).val());
       //$(this).trigger("keyup"); // <----this should not be here so remove it.
    }
});

答案 2 :(得分:0)

据我所知,你想进入行动

你应该改变这段代码

if (code == 13) {     //for "go" key
    //alert("pressed");
    alert($(this).val());
    $(this).trigger("keyup");
}

并阻止对文本字段执行默认操作并触发单击“转到”按钮

if (code == 13) {     //for "go" key
    event.preventDefault(); // prevent default action if enter is pressed
    //alert("pressed");
    alert($(this).val());
    //$(this).trigger("keyup"); //trigger click on button instead
$('#go-button').trigger('click'); 
}

答案 3 :(得分:0)

软键盘按钮,例如箭头和&#34;完成&#34;或&#34; Go&#34;按钮没有keyCode。只要键盘处于活动状态,即使blur事件也不会触发它们。

或者,您可以收听focusout事件,该事件会在元素失去焦点并且键盘处于激活状态时触发。

$(document).on("pagecreate", function () { /* or pageinit for jQM 1.3 */
  $("[data-type=search]").on("focusout", function () {
    alert($(this).val());
  });
});

更新

根据您的评论,Android的键盘按钮为keyCode。您只需绑定pagecreate上相当于.ready()的事件。

$(document).on("pagecreate", function() {
  $("[data-type='search']").on("keyup", function(e) { 
    var code = e.keyCode || e.which; if (code == 13) { 
      alert($(this).val()); 
    } 
  }); 
});