2014-10-16 11 views
5

Sto eseguendo un segnaposto su un campo di input su una pagina di accesso. Su Android (4.3) riempie automaticamente i campi utente e password al caricamento della pagina. Usando Javascript sono in grado di ottenere la lunghezza dell'input utente compilato automaticamente ma quando eseguo la stessa funzione sull'input della password restituisce 0.Lunghezza del campo di inserimento password = 0 su riempimento automatico (chrome android)

Anche quando eseguo il debug utilizzando il debug remoto di Chrome, mostra che il campo di immissione della password è " "con una lunghezza = 0. Eppure Android chrome mostra la password nel campo.

C'è comunque intorno a questo. Ho solo bisogno di rilevare quando il campo di input non è vuoto, quindi posso nascondere il segnaposto.

$(document).ready(function(){ 
    setTimeout(function() { 
     alert($("#password").val().length); 
     checkPlaceholder("#password"); 
    }, 1000); 
}); 

function checkPlaceholder(x) { 
    if($(x).val().length === 0){ 
     $(x).parent().find(".input_placeholder").removeClass("placeholder_hide"); 
    } 
    else { 
     $(x).parent().find(".input_placeholder").addClass("placeholder_hide"); 
    } 
} 
+0

Otterresti risultati più rapidi se aggiungi il tuo codice a questo post. – Fergoso

+0

Grazie per il suggerimento. – Jason

risposta

0

Bene, ho avuto un problema simile. E non ho trovato alcuna informazione al riguardo. Ma ho notato che Android Chrome riempie il campo della password con un valore reale dopo che l'utente ha toccato il corpo del documento. Dopo che il campo della password genera l'evento 'change', e se ne controlli il valore sarà riempito. Sfortunatamente Chrome non funziona allo stesso modo se attiviamo eventi 'click'/'touch'/'focus' etc., solo l'hardware tocca.

Quindi, ho risolto il problema aggiungendo il listener di eventi per l'evento 'change' sul campo della password. Per te la soluzione può essere qualcosa di simile:

$(document).ready(function() { 
    // leave this code for other browsers 
    setTimeout(function() { 
     alert($("#password").val().length); 
     checkPlaceholder("#password"); 
    }, 1000); 
    // android Chrome fix 
    $('#password').change(checkPlaceholder.bind(null, '#password')); 
}); 

Ma, come ho scritto prima, che il codice eseguirà SOLO dopo tap utente a pagina.

+0

Lo stesso problema qui, ma ancora nessuna soluzione –

Problemi correlati