Это потому, что, когда вы вводите номер, нажмите «Ввод», input.nextInt()
потребляет только номер, а не «конец строки». Когда input.nextLine()
выполняется, он потребляет «конец строки» все еще в буфере с первого входа.
Вместо этого используйте input.nextLine()
сразу после input.nextInt()
Чтобы вызвать функцию нажатием или касанием, вы можете изменить это:
$(document).click( function () {
К этому:
$(document).on('click touchstart', function () {
Или это:
$(document).on('click touch', function () {
Событие touchstart
срабатывает, как только элемент прикасается, событие touch
больше похоже на «ответвление», то есть на один контакт на поверхности. Вы действительно должны попробовать каждый из них, чтобы увидеть, что лучше всего подходит для вас. На некоторых устройствах touch
может быть немного сложнее вызвать (что может быть хорошим или плохим - оно предотвращает подсчет перетаскивания, но случайное небольшое перетаскивание может привести к его не срабатыванию).
Как указано выше, использование 'click touchstart'
даст желаемый результат. Если вы console.log(e)
свои клики, вы можете обнаружить, что когда jquery распознает касание как щелчок - вы получите 2 действия от нажатия и сенсорного ввода. Решение для меня работало.
//if its a mobile device use 'touchstart'
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
deviceEventType = 'touchstart'
} else {
//If its not a mobile device use 'click'
deviceEventType = 'click'
}
$(document).on(specialEventType, function(e){
//code here
});
touchstart или touchhend не хороши, потому что, если вы прокручиваете страницу, устройство действительно работает. Поэтому, если я хочу закрыть окно с нажатием или щелчком вне элемента и прокрутить окно, я сделал:
$(document).on('touchstart', function() {
documentClick = true;
});
$(document).on('touchmove', function() {
documentClick = false;
});
$(document).on('click touchend', function(event) {
if (event.type == "click") documentClick = true;
if (documentClick){
doStuff();
}
});
можете ли вы использовать jqTouch или jquery mobile ? там гораздо легче обрабатывать события касания. Если нет, то вам нужно имитировать щелчок на сенсорном устройстве, следуйте этим статьям:
Чтобы применить его повсюду, вы можете сделать что-то вроде
$('body').on('click', function() {
if($('.children').is(':visible')) {
$('ul.children').slideUp('slow');
}
});