Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Solo punti e numeri in un campo testuale, problema forse di encoding?

    Ciao, ho un campo input per cui voglio permettere solo di inserire
    numeri, la virgola e il punto.

    Usando jquery (ma non dovrebbe essere importante) assegno la funzione
    all'input in questo modo:

    codice:
    $('.only_numbers').bind('keydown', function(e) {
    onlyNumbers(e);
    });
    e la funzione onlyNumbers è fatta cosi:

    codice:
    function onlyNumbers(e) {
    
    key = e.keyCode;
    
    if(debug) log("onlyNumbers\nkey_code:"+key);
    
    if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || 
    (key==27) ) return true;
    
    keychar = String.fromCharCode(key);
    if(debug) log("keychar:"+keychar);
    
    // numbers
    if((("0123456789.,").indexOf(keychar) > -1)) {
    if(debug) log('carattere accettato');
    return true;
    }
    
    if(debug) log('carattere NON accettato');
    return false;
    
    }
    Sia con firefox che con explorer la funzione c'è qualcosa che non va nei
    codice caratteri.

    Il log seguente mostra quello che succede se inserisco "a1,3."
    codice:
    onlyNumbers key_code:65
    keychar:A
    carattere NON accettato
    onlyNumbers key_code:49
    keychar:1
    carattere accettato
    onlyNumbers key_code:188
    keychar:¼
    carattere NON accettato
    onlyNumbers key_code:51
    keychar:3
    carattere accettato
    onlyNumbers key_code:190
    keychar:¾
    carattere NON accettato
    I miei file php/tpl sono in utf8, l'header della pagina è utf8 e i file
    javascript pure.

    Qualche consiglio?

    grazie, ciao

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    aggiungo, se volete fare una prova potete vedere un test qui:

    http://lab.gianiaz.com/jquery/filter_input/

    Se avete firebug vedrete il log in console, altrimenti tramite alert.

    Ciao

  3. #3
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Ero proprio fuori strada, il problema non era l'encoding.

    Innanzitutto la funzione va fatta scaturire all'evento keypress e non keydown. Il motivo per cui i risultati siano diversi rimane misterioso, comunque mi è stato consigliato di usare questo evento e in effetti funziona.
    Qui di seguito la pagina con il risultato funzionante :

    http://lab.gianiaz.com/jquery/filter_input/solved.html

    Mi è stato fatto notare che per IE6 l'evento keypress non viene scaturito per alcuni caratteri non stampabili, come le frecce il backspace e altro, ma in questo caso non è importante.

    ciao

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