Tengo un formulario que el usuario puede cargar un archivo a la base de datos. No se puede realizar el .on("click") en el dispositivo móvil. Funciona bien en PC/portátil y el archivo se carga correctamente. En el móvil, si hago clic en el botón, no hay respuesta.
Códigos
$(document).on("click", "#submit_upload", function(){ var data = new FormData(document.querySelector("#fileInfo")); // If I comment below variables, // it works fine on both mobile and computers. jab = data.get('jab'), kat_doc = data.get('jenis_fail'), doc_nama = data.get('nama'); doc = data.get('file').size; $.ajax({ url: url, type: "POST", data: data, contentType: false, cache: false, processData:false, success: function(data) { $("#cont").html(data); if (!doc_nama) { $("#nama-doc").addClass("list-group-item list-group-item-warning"); } if (jab == 0) { $("#jab").addClass("list-group-item list-group-item-warning"); } if (kat_doc == 0) { $("#kat-doc").addClass("list-group-item list-group-item-warning"); } if (!doc) { $("#doc").addClass("list-group-item list-group-item-warning"); } $('#myModal').modal({backdrop: "static"}); $('#myModal').on('shown.bs.modal', function () { $('#myInput').focus(); }); } }); }); Nota: si comento las variables jab/kat_doc/doc_nama/doc , desencadena el evento de clic.
¿Cómo quiero que funcione con las variables?
Piensa en móvil un segundo...
No hay mouse en un teléfono celular o tableta.
el click es definitivamente un evento del mouse.
Intente agregar esos eventos a su controlador:
( Referencia de evento táctil )
$(document).on("click tap touchstart", "#submit_upload", function(){Esto debería funcionar.
cambie la primera línea de su función a la siguiente, y debería funcionar:
$(document).on('click touchstart', '#submit_upload', function(){O dale una oportunidad a esto,
$(document).on('click touchstart tap', '#submit_upload', function(){prueba esto:
$('#submit_upload').on('click', function(){...});