Visualizzazione risultati 1 fino 8 di 8

Discussione: consentire solo inserimento di alcuni caratteri

  1. #1
    Guest

    Unhappy consentire solo inserimento di alcuni caratteri

    salve a tutti vi prego ci sarebbe qualche esperto di javascript che potrebbe darmi una mano, impratica non riesco a trovare un sistema non consentire immisione di carratteri dentro una textarea in javascript, vorrei escludere i seguenti caratteri ess: "/*-+@#][]?^§=)((/&%$$££"!" dalla text che elenco qui sotto
    Codice PHP:
    <span style="font-size: 15px"></span><strong><span style="background-color: #ffd700"><input maxlength="16" name="cartella" type="text" /></span></strong><span style="font-size: 15px"></span></p>

  2. #2
    Guest

    Predefinito

    Se vuoi fare il controllo quando il form viene inviato, allora la funzione che fa per te è indexOf. Ovviamente devi usarla per ogni carattere che vuoi escludere. --> Se c'è questo carattere allora fai questo.

    Se invece vuoi che proprio fisicamente non sia possibile inserire quei caratteri nella textarea (cioè è come se si disattivassero quei tasti) allora, premesso che non condivido questa cosa, devi fare così:

    Al caricamento della pagina inizializzare una variabile (es. contTextArea=""). Deve essere globale quindi non usare "var". Poi devi legare una funzione all'evento onkeydown relativo alla textarea. Questa funzione deve estrapolare il contenuto della textarea, vedere se è più lungo di quello contenuto della variabile contTextArea (usa .length). Se sì allora prendi l'ultima lettera (ogni stringa in se è un array di lettere, quindi se per esempio il contenuto della textarea è nella variabile myTextArea, l'ultima lettera la ottieni facendo myTextArea[myTextArea.length]) e verifichi se è una di quelle da vietare. Se è una di quelle sostituisci il contenuto della textarea con quello nella variabile contTextArea, altrimenti aggiorni la variabile contTextArea con il nuovo contenuto e lasci stare la textarea. Il risultato finale è che quando per esempio si inserisce @ questo non viene inserito (o comunque viene eliminato in una frazione di secondo). A questo punto però ti dico che così non è molto carino, quindi io aggiungerei un alert che avverte del fatto che il carattere inserito non è valido, altrimenti uno pensa che la tastiera non vada...

    Ciao

  3. #3
    Guest

    Predefinito

    cioe io cerco semplicemente di far si che dentro la textarea non sia possibile inserire caratteri tipo /**-/+òò+++èùìùìùì ecc.. ma solo caratteri minuscoli e numeri ce una funzione tipo pattern="[a-z]" per html ma una cosa simile per javascript controllato questo comando contTextArea="" nel manuale javascript non e stao mai inventato nai ideatori di javascript :-)
    Ultima modifica di webskey : 13-04-2012 alle ore 13.28.10

  4. #4
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    per impedire caratteri nell'input, devi usare jquery ...

    dai un id all'input:
    Codice HTML:
    <input maxlength="16" name="cartella" type="text" id="cartella"/>
    questo script jquery permette solo inserimento di numeri, per input numerico, più i tasti specificati:
    Codice HTML:
    <script type="text/javascript">
          $(document).ready(function() {
    
            (function() {
                var editingKeys = {
                   '8'  : 'backspace',
                   '46' : 'canc',
                   '37' : 'leftarrow',
                   '39' : 'rightarrow'
                };
    						
    						
    	    $('#cartella').bind('keydown', function(e) {
                    var key = String.fromCharCode(e.keyCode);
                    if (isNaN(key)) return (e.keyCode in editingKeys);
                });					
    						
    						
            })();
    
          });
    puoi trovare i codici dei tasti qui:
    http://www.cambiaresearch.com/articl...odes-key-codes

    ora si tratta di modificare lo script per le tue esigenze...


    edito qui per testare questo codice, provalo:

    Codice HTML:
    $(document).keydown(function(e){
    				   e.preventDefault();
    					 
    					 var editingKeys = {
                   '16':'shift',
    							 '17':'ctrl',
    							 '18':'alt',							 
    							 '192':'grave accent',
    							 '222':'single quote',
    							 '191':'forward slash',
    							 '186':'º',
    							 '187':'»',
    							 '188':'comma',
    							 '190':'period',
    							 '109':'subtract',							 
    							 '220':'back slash',
    							 '219':'open bracket',
    							 '221':'close braket',
    							 '226':'â',
                };
    					 
    					 var key = String.fromCharCode(e.keyCode);
    					 //if (isNaN(key) & (e.keyCode in editingKeys))
    					 if (e.keyCode in editingKeys)
    					    alert('Tasto Non Accettato! --> '+e.keyCode+' = '+key);
    					 else alert('Tasto Accettato! --> '+e.keyCode+' = '+key);
    					 
    					 $('#cartella').val(key);
    							
    							});
    				
    Ultima modifica di EuroSalute : 14-04-2012 alle ore 22.56.32 Motivo: prova codice...
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  5. #5
    Guest

    Predefinito

    ottimo sei sempre il migliore eurosalute :-)

  6. #6
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,259

    Predefinito

    A naso questo sistema non ti protegge da qualcuno che fa copia e incolla dei caratteri, o mi sbaglio?

    edit: io farei così, che mi sembra più semplice, più affidabile, e circa 30KB più leggero dell'usare jQuery.

    Codice HTML:
    <script type="text/javascript">
      // abcd è l'insieme dei caratteri da eliminare, occhio nel caso siano caratteri speciali per le espressioni regolari.
      function pulisci(campo) { campo.value=campo.value.replace(/[abcd]/g,''); }
    </script>
    
    <textarea onchange="pulisci(this)" onkeyup="pulisci(this)"></textarea>


    Citazione Originalmente inviato da EuroSalute Visualizza messaggio
    per impedire caratteri nell'input, devi usare jquery ...
    Puoi, non devi. jQuery è di certo il metodo più voluminoso, e se non lo usi già per qualche altra dozzina di motivi, probabilmente puoi farne a meno.
    Ultima modifica di dreadnaut : 03-05-2012 alle ore 20.20.20

  7. #7
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    969

    Predefinito

    webskey aveva chiesto un metodo per non far digitare eventuali caratteri nell'input, è ovvio che lo stesso input deve essere validato con una opportuna regexp....

    ed è quello che abbiamo fatto.
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  8. #8
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,259

    Predefinito

    Beh, si parlava di immissione, non di digitazione, quindi mi sono permesso di pignoleggiare

    Decisamente va validato anche lato server, perché di quello che ti inviano gli utenti non ci si può mai fidare.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •