Aplicación web iPad: evitar el enfoque de input DESPUÉS de una llamada ajax

Así que he leído y no puedo, por la vida de mi persona, resolver mi problema de manera efectiva.

En resumen, tengo una aplicación web creada para el iPad, que funciona como debería. Sin embargo, tengo un formulario Ajax que también se presenta como debería. Pero, después de la callback y borrar / restablecer mi formulario, el "iPad" se centra automáticamente en una input y abre el keyboard nuevamente. Esto está lejos de ser ideal.

Logré abrirme path, pero todavía no es perfecto. El código a continuación se ejecuta en mi callback ajax, que funciona, excepto que todavía hay un flash del keyboard que se abre y se cierra rápidamente.

Tenga en count que mi código no funcionará a less que use setTimeout . Además, de mi comprensión, document.activeElement.blur(); Solo funciona cuando hay un evento de clic, por lo que activé uno a través de js.

EN OTRAS PALABRAS, ¿CÓMO IMPEDO QUE EL TECLADO SE REACCIONE DESPUÉS DE LA APLICACIÓN DE AJAX EN LA APLICACIÓN WEB?

PD: la llamada Ajax funciona bien y no abre el keyboard en Safari en el iPad, solo en modo de aplicación web.

Aquí está mi código:

  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); } } 

Tal vez esté relacionado con cómo estoy limpiando mis formularios, así que aquí está ese código. Tenga en count que todas las inputs también tienen 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(); } 

Justo cuando publiqué una maldita generosidad, me di count, por error. Ir figura … jajaja

Para cualquier otra persona con este problema, tenía un div "superpuesto" posicionado en absolute sobre el formulario (usado como mi post de agradecimiento mostrado en el éxito de ajax). Aparentemente esto estaba causando que el keyboard se abriera después de la llamada de Ajax. Por razones de UI, cambié la position a position: fixed; y el problema destacado en mi pregunta inicial parece haberse solucionado misteriosamente. Extraño … me encantaría saber por qué si alguien sabe … brutal.