Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    Automazione data da 12052204 a 12/05/2004

    Ho uno script che mi immette in un campo testo lo slash (/) in automatico per facilitare l'inserimento di una data.

    Può essere provato A QUESTA PAGINA

    Ma ho un problema:

    se invece di scrivere 05122004 (che lui mi traduce al volo con 05/12/2004) scrivo 05/12/2004 mi compaiono 2 slash al posto di uno del tipo 05//12//2004.

    Come posso evitarlo?

    il codice è:
    codice:
    function autoSlash(){
               var cValue = document.data.datadocumento.value.length;
    	   if((cValue == 2 || cValue == 5) && event.keyCode!=8) 
    		document.data.datadocumento.value += "/";
    	   }

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    puoi mettere un controllo di questo tipo


    if(stringa.indexOf("/")>-1)NON ESEGUIRE IL CONTROLLO

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    ho già un
    if((cValue == 2 || cValue == 5) && event.keyCode!=8)

    forse mi serve il keycode dello slash? sa qual'è?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Se usi il keycode ti metti nelle peste da solo: ti limiti ad un particolare browser.
    Puoi usare indexOf("\/") come dice Dennis (ma con una backslash davanti alla slash) o metodi simili (ad es. charAt() ).
    Oppure puoi individuare se c'e` la slash con una regexp (ma questo ti obbliga ad agire sul codice piu` pesantemente).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    "Puoi usare indexOf("\/") come dice Dennis" domandavo del keycode perchè di javascript non ne capisco quasi nulla e inserire un altro keycode al codice per me era + semplice.

    Potresti aggiungere al codice il metodo da te descritto per risolvere il problema o farmi un esempio per farmi capire meglio come e dove inserirlo?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Io quella routine la farei completamente diversa:
    codice:
    function autoSlash(tt){
      var cv = tt.value;
      if(cv.length > 2) {
        if(cv.charAt(2) != "/") cv=cv.substr(0,2)+"/"+cv.substr(2);
        tt.value = cv;
      }
      if(cv.length > 5) {
        if(cv.charAt(5) != "/") cv=cv.substr(0,5)+"/"+cv.substr(5);
        tt.value = cv;
      }
      return;
    }
    da chiamare con:
    <input type="text" ... onkeyup="autoSlash(this);">
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Mich_ la tua routine funziona...ma ha un problema da non sottovalutare...quando inserisci il giorno (ad esempio 05) devi inserire il mese (ad es. 12) per far comparire il primo slash tra 05 e 12...quindi verrà scritto 051, poi alla quarta cifra mette lo slash tra il giorno e il mese es 05/12.

    Questo potrebbe rappresentare un problema di non veloce comprensione per chi inserisce la data.

    Volendo mopdificare il mio script...visto che userò solo internet explorer?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Non sono in grado di modificare script proprietari.

    Comunque nel mio codice precedente la slash dovrebbe comparire al terzo carattere, non al quarto (altrimenti c'e` un errore).

    Posso provare a modificare il mio:
    codice:
    function autoSlash(tt){
      var cv = tt.value;
      if(cv.length == 2) {
        cv += '/';
        tt.value = cv;
        return;
      } else if(cv.length > 2) {
        if(cv.charAt(2) != "/") {
          cv = cv.substr(0,2)+"/"+cv.substr(2);
          tt.value = cv;
        }
      }
      if(cv.length == 5) {
        cv += '/';
        tt.value = cv;
        return;
      } else if(cv.length > 5) {
        if(cv.charAt(5) != "/") {
          cv = cv.substr(0,5)+"/"+cv.substr(5);
          tt.value = cv;
        }
      }
      return;
    }
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    E' perfetto!!!

    Ora lo slash lo fa al terzo.

    Però ha un po di bug:

    1) quando cancelli con del si ferma al primo slash e non cancella oltre

    2) quando ti posizioni all'inizio del campo e cerchi di cancellare con canc il cursore si sposta alla fine del campo non cancellando niente

    3) quando in vece di inserire 05121990 inserisco 05/12/1990 con slash mi scrive 2 volte lo slash

    Scusa se sono pignolo ma mi metto completamente nei panni dell'utente che deve essere facilitato al massimo.

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    hai ragione ad essere pignolo.

    In effetti il canc e` un bel problema.

    Prova a mettere un if all'inizio della routine, che impedisce il calcolo se il tasto premuto e` del o canc.
    Prendendo dal tuo codice, potrebbe essere:
    if(event.keyCode==8 || event.keyCode==127) return;
    ma su questo non ci metterei le mani sul fuoco, tra l'altro e` browser-dipendente.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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 © 2025 vBulletin Solutions, Inc. All rights reserved.