Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    23

    Javascript: Controllo caratteri immessi non funzionante :(

    sto provando questo script
    codice:
    <head>
    
    <script type="text/javascript">
    var ck_title = /^[A-Za-z0-9!@#$%^&*()?;+.:,;_]{1,100}$/;
    var ck_text =  /^[A-Za-z0-9!@#$%^&*()?;'";+.:,;_]{1,15000}$/;
    
    function validate(form){
    var Titolo = form.title.value;
    var Testo = form.text.value;
    var errors = [];
     
    if (!ck_title.test(title)) {
      errors[errors.length] = "Special Characters are not allowed!";
     }
     if (!ck_text.test(text)) {
      errors[errors.length] = "Special Characters are not allowed!";
     }
     
     if (errors.length > 0) {
    
      reportErrors(errors);
      return false;
     }
      return true;
    }
    function reportErrors(errors){
     var msg = "Inserisci Caratteri Consentiti. \n";
     for (var i = 0; i<errors.length; i++) {
     var numError = i + 1;
      msg += "\n" + numError + ". " + errors[i];
    }
     alert(msg);
    }
    </script>
    
    
    </head>
    solo che sembrano non funzionare.. volevo che bloccasse solo alcuni caratteri speciali come <> e le / \ permettendo tutti gli altri.. solo che mi esce errore con qualsiasi carattere provo a inserire.. il codice html collegato è
    codice HTML:
    <form action="PostNews.php" method="POST" onSubmit="return validate(this);" name="form" checked>
    e i 2 box in cui scrivere il testo sono
    codice HTML:
    <span class="add-on newskys-color-red" style="width:90px;">Titolo</span><input value="" title="Inserisci il titolo" data-rel="tooltip" id="title" name="title" size="25" maxlength="100"   type="text" placeholder="Insert Title"  required>
    codice HTML:
    <textarea rows="4" cols="300" style="width:500px ; height:350px ; position:relative ; left:140 ; resize:none" title="Inserisci il Testo" data-rel="tooltip" id="text" name="text" size="25" maxlength="15000"   type="text" placeholder="Insert Text" required></textarea>
    come faccio a farlo funzionare e fare in modo che vengano bloccati solo i caratteri "<|/\>" (quelli tra apici).. aiuto

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ad occhio vedo qualche errore grossolano.
    Hai dichiarato le variabili Titolo e Testo mentre nei test utilizzi title e text. Non tornano i conti.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    23

    Grazie ora da un solo errore.

    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Ad occhio vedo qualche errore grossolano.
    Hai dichiarato le variabili Titolo e Testo mentre nei test utilizzi title e text. Non tornano i conti.
    ho aggiustato in questo modo.
    codice:
    <head>
    
    <script type="text/javascript">
    var ck_title = /^[A-Za-z0-9!@#$%^&*()?;+.:,;_]{1,100}$/;
    var ck_text =  /^[A-Za-z0-9!@#$%^&*()?;'";+.:,;_]{1,15000}$/;
    
    function validate(form){
    var title = form.title.value;
    var text = form.text.value;
    var errors = [];
     
    if (!ck_title.test(title)) {
      errors[errors.length] = "Carattere/i non ammesso/i nel Titolo!";
     }
     if (!ck_text.test(text)) {
      errors[errors.length] = "Carattere/i non ammesso/i nel Testo!";
     }
     
     if (errors.length > 0) {
    
      reportErrors(errors);
      return false;
     }
      return true;
    }
    function reportErrors(errors){
     var msg = "Inserisci Caratteri Consentiti. \n";
     for (var i = 0; i<errors.length; i++) {
     var numError = i + 1;
      msg += "\n" + numError + ". " + errors[i];
    }
     alert(msg);
    }
    </script>
    Adesso però mi da errore nel titolo. può essere perchè il titolo è un input mentre il testo è una textarea? grazie per l'aiuto

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Adesso però mi da errore nel titolo
    In quale caso particolare?

    A me funziona (testato su FF, IE, CH).

    Ad ogni modo ci sono degli errori di validazione nel codice HTML (che sembra non influiscano comunque sul funzionamento dello script):
    • L'attributo checked non è permesso sull'elemento <form>
    • L'attributo size non è permesso sull'elemento <textarea>
    • L'attributo type non è permesso sull'elemento <textarea>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Il form non chiamarlo form (parola riservata) cambialo con modulo idem con la variabile form cambiala con nomeForm
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    23
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Il form non chiamarlo form (parola riservata) cambialo con modulo idem con la variabile form cambiala con nomeForm
    Perchè mi da invalida la punteggiatura come , ; : . o simili? gli unici che mi interessa bloccare sono <> / \ questi 4 simboli. un aiuto?

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Devi modificare opportunamente i pattern delle espressioni regolari.
    Potrebbe essere una cosa del genere:
    codice:
    var ck_title = /^[^<>\/\\]{1,100}$/;
    var ck_text =  /^[^<>\/\\]{1,15000}$/;
    Ti posto un esempio funzionante, col tuo codice rivisto e validato:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <script type="text/javascript">
          var ck_title = /^[^<>\/\\]{1,100}$/;
          var ck_text =  /^[^<>\/\\]{1,15000}$/;
          
          function validate(form){
            var title = form.title.value;
            var text = form.text.value;
            var errors = [];
            
            if (!ck_title.test(title)){errors[errors.length] = "Carattere/i non ammesso/i nel Titolo!";}
            if (!ck_text.test(text)){errors[errors.length] = "Carattere/i non ammesso/i nel Testo!";}
            
            if (errors.length > 0){
              reportErrors(errors);
              return false;
            }
            return true;
          }
          
          function reportErrors(errors){
            var msg = "Inserisci Caratteri Consentiti. \n";
            for (var i = 0; i<errors.length; i++) {
              var numError = i + 1;
              msg += "\n" + numError + ". " + errors[i];
            }
            alert(msg);
          }
      </script>
      </head>
      <body>
        <form action="PostNews.php" method="POST" onSubmit="return validate(this);" name="form">
          <br><span class="add-on newskys-color-red" style="width:90px;">Titolo</span><input value="" title="Inserisci il titolo" data-rel="tooltip" id="title" name="title" size="25" maxlength="100" type="text" placeholder="Insert Title" required>
          <br><textarea rows="4" cols="300" style="width:500px;height:350px;position:relative;left:140;resize:none" title="Inserisci il Testo" data-rel="tooltip" id="text" name="text" maxlength="15000" placeholder="Insert Text" required></textarea>
          <br><input type=submit>
        </form>
      </body>
    </html>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    23
    Quote Originariamente inviata da KillerWorm Visualizza il messaggio
    Devi modificare opportunamente i pattern delle espressioni regolari.
    Potrebbe essere una cosa del genere:
    codice:
    var ck_title = /^[^<>\/\\]{1,100}$/;
    var ck_text =  /^[^<>\/\\]{1,15000}$/;
    Ti posto un esempio funzionante, col tuo codice rivisto e validato:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <script type="text/javascript">
          var ck_title = /^[^<>\/\\]{1,100}$/;
          var ck_text =  /^[^<>\/\\]{1,15000}$/;
          
          function validate(form){
            var title = form.title.value;
            var text = form.text.value;
            var errors = [];
            
            if (!ck_title.test(title)){errors[errors.length] = "Carattere/i non ammesso/i nel Titolo!";}
            if (!ck_text.test(text)){errors[errors.length] = "Carattere/i non ammesso/i nel Testo!";}
            
            if (errors.length > 0){
              reportErrors(errors);
              return false;
            }
            return true;
          }
          
          function reportErrors(errors){
            var msg = "Inserisci Caratteri Consentiti. \n";
            for (var i = 0; i<errors.length; i++) {
              var numError = i + 1;
              msg += "\n" + numError + ". " + errors[i];
            }
            alert(msg);
          }
      </script>
      </head>
      <body>
        <form action="PostNews.php" method="POST" onSubmit="return validate(this);" name="form">
          <br><span class="add-on newskys-color-red" style="width:90px;">Titolo</span><input value="" title="Inserisci il titolo" data-rel="tooltip" id="title" name="title" size="25" maxlength="100" type="text" placeholder="Insert Title" required>
          <br><textarea rows="4" cols="300" style="width:500px;height:350px;position:relative;left:140;resize:none" title="Inserisci il Testo" data-rel="tooltip" id="text" name="text" maxlength="15000" placeholder="Insert Text" required></textarea>
          <br><input type=submit>
        </form>
      </body>
    </html>
    Grazie mille mi hai risolto il problema.

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.