JQuery:在 iPhone 上捕获 Enter + Done/Return
JQuery: Capture Enter + Done/Return on iPhone
我有一个带有搜索字段的页面,可以通过输入搜索词然后按回车键来使用。这在桌面浏览器上工作正常,但我捕获 "Enter" 按钮按下的代码在 iPhone(可能还有其他移动浏览器)上不起作用。
HTML 是一个简单的输入字段(不在 FORM 元素内):
<div class="col-xs-12 col-sm-3 action-row padding pull-right xs-margin-up">
<span class="k-textbox k-button k-space-left col-xs-12 search-box">
<i class="fa-icon-search"></i>
<input id="search" placeholder="Search" />
</span>
</div>
然后我将按键绑定到 document.ready:
$(this).keypress(function(event) {
if ($('#search').is(":focus") && event.which == 13) {
search = $('#search').val();
generateView();
}
});
/*$('#search').bind('keypress', function(e) {
if (e.which == 13) {
search = $('#search').val();
generateView();
}
});*/
您会注意到两个不同的版本 - 第一个是唯一适合我的版本,无论浏览器是什么。我基于其他一些 Stack Overflow 线程尝试了第二个,但它甚至不能在 Firefox 上运行,没关系 iPhone.
我创建了这个 fiddle,它对 iphone 没有任何作用:http://jsfiddle.net/tb653201/
解决您遇到的问题的一种方法是将您的输入包装在表单标签中,添加一个隐藏的提交按钮,然后使用 jQuery 的 "submit" 事件来触发他们。 Mobile 接受了它是一种形式的事实,并以不同于常规打字的方式处理 "enter" 按键。
$("#myform").on("submit", function(event){
event.preventDefault();
// Your custom search functions here
});
#myform input[type='submit'] { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="col-xs-12 col-sm-3 action-row padding pull-right xs-margin-up">
<span class="k-textbox k-button k-space-left col-xs-12 search-box">
<i class="fa-icon-search"></i>
<form id="myform" action="#">
<input id="search" placeholder="Search" />
<input type="submit" value="">
</form>
</span>
</div>
有关详细信息,请参阅此内容:https://api.jquery.com/submit/
您可以在值中测试 return 键结果,但它需要在文本区域中才能捕获它
它也是一个 "framework free" 解决方案,但也可以与 jQuery 一起使用
document.getElementById('search').addEventListener('keyup', checkValue);
function checkValue(event){
var input = event.target;
var splitedText = input.value.split(/\n/g);
input.value = splitedText[0];
if(splitedText.length> 1)
alert('enter or whatever was pressed');
}
textarea.input{
overflow: hidden;
resize: none;
}
<html>
<body>
<textarea id="search" class="input" placeholder="search" cols="30" rows="1" wrap="off"></textarea>
</body>
</html>
试试这个
$('#search').keyup(function(event) {
if (event.which == 13) {
search = $('#search').val();
generateView();
}
});
我认为你应该做的另一件事是,如果你有一个搜索输入,就是给它一个 'search' 类型。然后,您还可以利用搜索输入类型的其他功能,例如数据列表。
我有一个带有搜索字段的页面,可以通过输入搜索词然后按回车键来使用。这在桌面浏览器上工作正常,但我捕获 "Enter" 按钮按下的代码在 iPhone(可能还有其他移动浏览器)上不起作用。
HTML 是一个简单的输入字段(不在 FORM 元素内):
<div class="col-xs-12 col-sm-3 action-row padding pull-right xs-margin-up">
<span class="k-textbox k-button k-space-left col-xs-12 search-box">
<i class="fa-icon-search"></i>
<input id="search" placeholder="Search" />
</span>
</div>
然后我将按键绑定到 document.ready:
$(this).keypress(function(event) {
if ($('#search').is(":focus") && event.which == 13) {
search = $('#search').val();
generateView();
}
});
/*$('#search').bind('keypress', function(e) {
if (e.which == 13) {
search = $('#search').val();
generateView();
}
});*/
您会注意到两个不同的版本 - 第一个是唯一适合我的版本,无论浏览器是什么。我基于其他一些 Stack Overflow 线程尝试了第二个,但它甚至不能在 Firefox 上运行,没关系 iPhone.
我创建了这个 fiddle,它对 iphone 没有任何作用:http://jsfiddle.net/tb653201/
解决您遇到的问题的一种方法是将您的输入包装在表单标签中,添加一个隐藏的提交按钮,然后使用 jQuery 的 "submit" 事件来触发他们。 Mobile 接受了它是一种形式的事实,并以不同于常规打字的方式处理 "enter" 按键。
$("#myform").on("submit", function(event){
event.preventDefault();
// Your custom search functions here
});
#myform input[type='submit'] { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="col-xs-12 col-sm-3 action-row padding pull-right xs-margin-up">
<span class="k-textbox k-button k-space-left col-xs-12 search-box">
<i class="fa-icon-search"></i>
<form id="myform" action="#">
<input id="search" placeholder="Search" />
<input type="submit" value="">
</form>
</span>
</div>
有关详细信息,请参阅此内容:https://api.jquery.com/submit/
您可以在值中测试 return 键结果,但它需要在文本区域中才能捕获它
它也是一个 "framework free" 解决方案,但也可以与 jQuery 一起使用
document.getElementById('search').addEventListener('keyup', checkValue);
function checkValue(event){
var input = event.target;
var splitedText = input.value.split(/\n/g);
input.value = splitedText[0];
if(splitedText.length> 1)
alert('enter or whatever was pressed');
}
textarea.input{
overflow: hidden;
resize: none;
}
<html>
<body>
<textarea id="search" class="input" placeholder="search" cols="30" rows="1" wrap="off"></textarea>
</body>
</html>
试试这个
$('#search').keyup(function(event) {
if (event.which == 13) {
search = $('#search').val();
generateView();
}
});
我认为你应该做的另一件事是,如果你有一个搜索输入,就是给它一个 'search' 类型。然后,您还可以利用搜索输入类型的其他功能,例如数据列表。