Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    526

    Consentire solo certi caratteri in un campo testo

    Ho un campo testo dichiarato con <Input type='text'> in cui genero in tempo reale una stringa di testo in base a come vengono compilati i campi sopra di lui.

    Es.: immaginate due SELECT in cui nel primo seleziono "pippo" e nel secondo seleziono "topolino", nel campo testo verrà scritto automaticamente "pippo topolino"

    Ora vorrei fare in modo che da tastiera un utente possa solo inserire certi caratteri (nello specifico solo parentesi tonde). Meglio ancora se fosse anche possibile la cancellazione di solo certi caratteri (presumibilmente solo quelli consentiti precedentemente).

    Sapete aiutarmi?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    526
    Nessuna risposta?
    E' già la seconda domanda che faccio senza ottenerne. Ma possibile che chiedo cose cosi' complicate.

    Capisco che possa trattarsi di script non proprio elementari, ma credo proprio che qualcuno in gior abbia gia' trovato una soluzione a questi problemi. Magari voi dovreste avere qualche dritta o qualche indirizzo sul quale orientarmi!

  3. #3
    fai una cerca nel forum, ricordo una funzione che ti permette di escludere alcuni caratteri da un campo di testo intercettando il codice del tasto premuto (funziona solo con IE) può fare al caso tuo?

    http://forum.html.it/forum/showthrea...hreadid=943034

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    526
    Ho preso uno script dal thread segnalato e l'ho modificato secondo le mie esigenze, ottenendo:

    codice:
    <script language='javascript'>
    function SoloParentesi(_event)
    {
      var keyPressed= _event.keyCode ? _event.keyCode : _event.which ? _event.which : _event.charCode;
    	var isDigit;
    	if (!isDigit)
      {
        var AllowedKeys = new Array(8, 28, 29, 40, 41)
    		for(var i=0; i<AllowedKeys.length; i++)
          if(keyPressed == AllowedKeys[i])
            return true;
    	}
      return false;
    }
    </script>
    
    <input type="text" onKeyPress="return SoloParentesi(event)">
    Noto però alcuni problemi:
    1) In Firefox pur consentendo esplicitamente le frecce laterali (codici 28 e 29), esse non funzionano.
    2) In Explorer al contrario funzionano ma... anche senza consentirle esplicitamente. In altre parole, se anche volessi, non potrei bloccarle.

    Sapreste aiutarmi?

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da ldetomi
    Nessuna risposta?
    E' già la seconda domanda che faccio senza ottenerne. Ma possibile che chiedo cose cosi' complicate.

    Capisco che possa trattarsi di script non proprio elementari, ma credo proprio che qualcuno in gior abbia gia' trovato una soluzione a questi problemi. Magari voi dovreste avere qualche dritta o qualche indirizzo sul quale orientarmi!
    calmino...
    nessuno qui e' obbligato a rispondere,
    non e' un helpdesk

    la cosa da come l' hai posta suona abbastanza complicata,
    personalmente seguirei un approccio completamente diverso (regexp)

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    526
    L'intenzione non era quella di far saltare le staffe a qualcuno, ma ritengo che una risposta anche del tipo:

    "E' più complicato di quello che pensi, meglio cercare qualcosa di già fatto" o cose simili, aiuterebbe chi ha i dubbi a non sentirsi ignorato.

    Avevo comunque letto alcune controindicazioni della regularExpression

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da ldetomi
    L'intenzione non era quella di far saltare le staffe a qualcuno
    l' unico che sembrerebbe averle perse sei tu
    Avevo comunque letto alcune controindicazioni della regularExpression
    tipo?

    l' elasticita' di una regexp fatta bene ti risparmia una moltitudine di righe di codice, i tempi di calcolo potranno anche essere lievemente maggiori ma in certi frangenti (come a me suona il tuo caso, poi tu solo lo conosci approfonditamente) non puoi esimerti dall' usarle

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    526
    qui: http://forum.html.it/forum/showthrea...lar+expression

    leggo che "... Le regular expressions possono VALIDARE un input DOPO la digitazione, la mia funzione FILTRA l'input consentendoti di inserire soltanto quanto desiderato (un numero intero positivo o negativo, oppure un decimale positivo o negativo col numero di cifre decimali che desideri)..."

    è così? perché in questo caso non serve ai miei scopi.

    comunque, con lo script postato sopra sono già riuscito ad ottenere un risultato soddisfacente, a parte il bug sopracitato di cui non capisco il motivo.

    Forse i codici ascii delle frecce sono sbagliati, in questo caso forse uno script che mi da' il codice ascii del tasto premuto sarebbe utile, ovviamente solo se si tratta di uno script di 3-4 righe.

    Inoltre, come detto prima, vorrei potenziare lo script di prima facendo in modo che oltre a poter INSERIRE solo parentesi, si possano anche CANCELLARE solo le parentesi.

  9. #9
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    l' approccio e' diverso: non e' un limite intrinseco delle regexp, ma un limite mentale di chi pensa lo script

    sinceramente non ci vedo nulla di impossibile nell' avere i 2 valori pippo e topolino, come 2 variabili, var a e b

    la funzione richiamata ad ogni rilascio di un tasto
    prende i 2 valori
    se il risultato dall' analisi della stringa e' accettato dalla regexp non modifica, altrimenti elimina qualsiasi carattere non accettato

    = riporta la stringa a prima della modifica invalidante

    quest ultimo passaggio, se non vuoi lavorare con i pezzi di pattern matchati dalla regexp, lo puoi aggirare salvando a fine funzione in variabile globale la stringa valida;
    ogni volta che non passa la regexp riporta a quel valore la stringa

    lavorare con i tasti si rivela, purtroppo, fallace x vari motivi,
    tanto casino poi magari un click destro -> incolla ti smonta tutto il lavoro

    se il valore e' quello che alla fine conta quello devi manipolare,
    di contro cercare di limitare l' utenza su determinati comportamenti naturali per me e' poco produttivo

    questo e' il mio parere, a te le scelte
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.