Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52

    Bug in Chrome onkeydown?!

    Ciao a tutti sto impazzendo con questa cosa!
    Magari a qualcuno è capitato e mi conferma che è un bug o magari mi da un workaround!
    Il problema, che mi accade solo su chrome, è che una volta inserita la stringa se faccio backspace per cancellare un carattere in realtà me ne cancella due!!!!!
    Non riesco proprio a capire perchè!!!!

    Ecco il codice:
    codice:
    <input id=textbox>
    document.getElementById("textbox").onkeydown = function (event) { 
      var key = event.charCode || event.keyCode || 0; 
      var campoData = document.getElementById("textbox"); 
      var stringa = campoData.value; 
      var len = campoData.length; 
      if (key == 8) { 
        var pos = campoData.selectionStart; 
        if (typeof pos == 'undefined') campoData.value = stringa.substring(0, len - 1); 
        else { 
          campoData.value = stringa.substring(0, pos - 1) + stringa.substring(pos);                                                                                                                                campo Data.selectionStart = pos - 1; 
          campoData.selectionEnd = pos - 1; 
         } 
      }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    l'utente cancella un carattere, il tuo codice ne rimuove un altro, quindi in totale sono 2, nessun bug...


  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52
    Scusa dov'è che cancello il secondo carattere?e poi perchè su altri browser funziona correttamente?!?

    PS:non so sei hai notato ma in fondo al riquadro del codice c'è un altra riga!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    su explorer a me non va proprio(però ho il 7), su ff non riesco a provare

    codice:
    else { 
          campoData.value = stringa.substring(0, pos - 1) + stringa.substring(pos);                                                                                                                                campo Data.selectionStart = pos - 1; 
          campoData.selectionEnd = pos - 1; 
    return false;
         }
    p.s. perche ti devi gestire tu la cancellazione?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    52
    Ciao Vindav!ora mi è un po più chiaro quello che dicevi!
    Il punto è che chrome gestisce da solo la cancellazione del carattere con il tasto backspace mentre firefox ad esempio no!
    Quindi con il mio codice in ff funziona bene(perchè c'è solo la mia gestione) mentre in chrome cancella due caratteri(appunto la mia gestione + il suo comportamento!).
    Ma allora come posso fare ad accontentare entrambi?!
    IE ovviamente si dimostra sempre il migliore visto che il mio codice non funziona proprio!!!!
    Ho creato un progettino su JsFiddle(in input le date 01011980), sapete un modo per uscirne?!?
    http://jsfiddle.net/wTrp9/

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    perche non utilizzi qualcosa di già pronto? in rete ci sono vari script già pronti che fanno quello che chiedi, cerca su google mask input

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.