Vì vậy, tôi đã đọc xung quanh và không thể cho cuộc sống của tôi tìm ra để giải quyết vấn đề của tôi một cách hiệu quả.Ứng dụng web iPad: Ngăn chặn tiêu điểm đầu vào SAU KHI gọi ajax
Tóm lại, tôi có một ứng dụng web được xây dựng cho iPad - hoạt động như mong muốn. Tuy nhiên, tôi có một hình thức Ajax mà cũng nộp như nó phải. Tuy nhiên, sau callback
và tôi xóa/đặt lại biểu mẫu của mình, "iPad" sẽ tự động tập trung vào đầu vào và mở lại bàn phím. Điều này là xa lý tưởng.
Tôi đã xoay xở để tìm đường, nhưng nó vẫn chưa hoàn hảo. Đoạn mã dưới đây chạy trên callback ajax của tôi, nó hoạt động - ngoại trừ vẫn có một đèn flash của bàn phím nhanh chóng mở và đóng.
Lưu ý, mã của tôi sẽ không hoạt động trừ khi tôi sử dụng setTimeout
. Ngoài ra, từ sự hiểu biết của tôi, document.activeElement.blur();
chỉ hoạt động khi có sự kiện nhấp chuột, vì vậy tôi đã kích hoạt một sự kiện qua js.
TỪ CÁC LOẠI KHÁC, LÀM THẾ NÀO ĐỂ CHỐNG BÀN PHÍM MẠNG TỪ KHI SỬA SAU SAU KHI AJAX GỌI TRÊN ỨNG DỤNG WEB?
PS: Cuộc gọi Ajax hoạt động tốt và không mở bàn phím trong Safari trên iPad, chỉ chế độ ứng dụng web.
Dưới đây là mã của tôi:
hideKeyboard: function() {
// iOS web app only, iPad
IS_IPAD = navigator.userAgent.match(/iPad/i) != null;
if (IS_IPAD) {
$(window).one('click', function() {
document.activeElement.blur();
});
setTimeout(function() {
$(window).trigger('click');
}, 500);
}
}
Có lẽ nó liên quan đến cách tôi thanh toán bù trừ các hình thức của tôi, vì vậy đây là mã mà. Lưu ý, tất cả các yếu tố đầu vào đều có tabindex = "- 1".
clearForm: function() {
// text, textarea, etc
$('#campaign-form-wrap > form')[0].reset();
// checkboxes
$('input[type="checkbox"]').removeAttr('checked');
$('#campaign-form-wrap > form span.custom.checkbox').removeClass('checked');
// radio inputs
$('input[type="radio"]').removeAttr('checked');
$('#campaign-form-wrap > form span.custom.radio').removeClass('checked');
// selects
$('form.custom .user-generated-field select').each(function() {
var selection = $(this).find('option:first').text(),
labelFor = $(this).attr('name'),
label = $('[for="' + labelFor + '"]');
label.find('.selection-choice').html(selection);
});
optin.hideKeyboard();
}
nó cực kỳ hữu ích cho người khác, cảm ơn! – Fattie