2016-08-24 6 views
1

http://api.jqueryui.com/spinner/Как предотвратить появление клавиатуры на мобильных устройствах?

Я пытаюсь использовать счетчик jQuery выше на своем веб-сайте (демонстрация его доступна в нижней части API).

Он работает действительно на компьютерах, но на мобильных устройствах клавиатура очень раздражающе появляется каждый раз, когда вы нажимаете кнопки вверх/вниз. Возможно ли предотвратить это? Spinner не очень хорошо реагирует на собственные функции, такие как .on ('click'), вместо этого он имеет свои собственные функции.

Как изменить код, чтобы клавиатура отображалась только при нажатии текстового поля, а не на кнопки вверх?

Это была моя попытка, она не работает:

$(function() { 
    $('.ui-spinner a').on('click', function() { 
     $(':focus').blur(); 
}); 

}) // Updated code, I can now see the focus being lost on desktops, but still not mobile devices 

Примечание: Я получил имя класса путем проверки кода, сгенерированного когда вертушка является created.Also, я супер новичок в веб-разработки, так что я я не уверен, что мне не хватает простого подхода.

+0

Вы проверили ответы здесь? http://stackoverflow.com/questions/3777669/prevent-keyboard-from-popping-on-textbox-focus-click-in-ipad-webapps – Xetnus

+0

Есть ли сообщение об ошибке в консоли? Это должно быть 'event.preventDefault()' в вашем коде. – Sky

+0

альтернативным способом было бы добавить еще один скрытый слой над текстовым вводом –

ответ

1

Когда нажата кнопка «вверх», вход будет фокусом, поэтому клавиатура дисплея мобильного устройства, решение добавляет атрибут readonly, когда пользователь нажимает окно ввода, удаляет его, размывает, снова добавляет атрибут readonly.

увидеть фрагмент кода, чтобы понять, извините мой английский не достаточно, чтобы описать

$("#spinner").spinner(); 
 
$("#spinner").click(function(event){ 
 
    $(this).removeAttr('readonly').select(); 
 
}); 
 
$("#spinner").blur(function(event){ 
 
    $(this).attr('readonly', 'readonly'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js" integrity="sha256-eGE6blurk5sHj+rmkfsGYeKyZx3M4bG+ZlFyA7Kns7E=" crossorigin="anonymous"></script> 
 
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
 
    
 
<input id="spinner" >

+0

Эй, большое спасибо! Это именно то, что я искал, однако, чтобы набрать прямо в текстовое поле, мне нужно дважды щелкнуть текстовое поле. Первый щелчок получает фокус, второй щелчок вызывает клавиатуру. Не могли бы вы узнать, как это исправить? Еще раз спасибо, Bùi! –

+0

Я отредактировал фрагмент кода, но у меня нет мобильного устройства здесь, чтобы проверить, надеюсь, он работает –

+0

Он работает! Спасибо :) –

0

Вам нужно только добавить атрибут readonly к input тега.

<input id="spinner" readonly> 
0

$(document).ready(function() { 
 
\t 
 
$(".spinner").spinner(); 
 
$(".spinner").click(function(event){ 
 
    $(this).removeAttr('readonly').select(); 
 

 
}); 
 
$(".spinner").blur(function(event){ 
 
    $(this).attr('readonly', 'readonly'); 
 
    
 
}); 
 
\t 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.min.js" integrity="sha256-eGE6blurk5sHj+rmkfsGYeKyZx3M4bG+ZlFyA7Kns7E=" crossorigin="anonymous"></script> 
 
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> 
 

 
    <input class="spinner" min="1" max="9" value="1" height="40px" readonly="readonly" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57">

+0

ваш код не работает –

+0

Вы забыли поставить файл jQuery min. –

+0

Извините! Я забыл добавить источник ссылок и скриптов, проверьте его сейчас, но мне нужно выделить стрелку Spinner вверх и вниз – developer

Смежные вопросы