2016-08-02 10 views
0

Ich habe die folgende JQuery-Funktion.wie PHP-Schleife in JQuery verwenden

<script> 

    var forbiddenWords = ['Phone', 'Home', 'Address', 'Number', 'Postcode', 'email', 'call','n u m b e r']; 
    $(function() { 
     $('.msgbox').on('keyup', function(e) { 
     forbiddenWords.forEach(function(val, index) { 
      if (e.target.value.toUpperCase().indexOf(val.toUpperCase()) >= 0) { 
       e.target.value = e.target.value.replace(new RegExp("(" + val + ")" , 'gi'), ''); 
      } 
     }); 
     }); 
    }); 

    </script> 

möchte ich die Worte in fordiddenWords Array sollte dynamisch sein und muss von MySQL-Datenbank kommen. Ich habe den folgenden Code geschrieben, aber es funktioniert nicht ..!

 <script> 

var forbiddenWords = [<?php foreach($result as $res) { echo $res->rest_words; } ?>]; 
     $(function() { 
      $('.msgbox').on('keyup', function(e) { 
      forbiddenWords.forEach(function(val, index) { 
       if (e.target.value.toUpperCase().indexOf(val.toUpperCase()) >= 0) { 
        e.target.value = e.target.value.replace(new RegExp("(" + val + ")" , 'gi'), ''); 
       } 
      }); 
      }); 
     }); 

     </script> 

Die Wörter erscheinen so ..!

var forbiddenWords = [phonenumberaddress];

Bitte Hilfe.

+0

Überprüfen Sie Ihre Konsole für Fehler – scrappedcola

+0

können Sie diese Variable forbiddenWords console.log? – MouradK

+0

$ res-> rest_words ist ein Array von Wörtern? oder eine einzelne Saite? – Mickey

Antwort

0

Sie verpassen die Kommas und die Zitate:

<script> 

var forbiddenWordsString = <?php foreach($result as $res) { echo "'" . $res->rest_words . "',"; } ?>; 
var forbiddenWords = [forbiddenWords.substring(0, str.length - 1)]; // remove last comma 
    $(function() { 
     $('.msgbox').on('keyup', function(e) { 
     forbiddenWords.forEach(function(val, index) { 
      if (e.target.value.toUpperCase().indexOf(val.toUpperCase()) >= 0) { 
       e.target.value = e.target.value.replace(new RegExp("(" + val + ")" , 'gi'), ''); 
      } 
     }); 
     }); 
    }); 

</script> 
+0

Syntaxfehler: Nachkomma nach dem letzten Array-Element – NDM

+0

Ich habe meine Antwort aktualisiert. – Manolo

0

wie diese direkt in Javascript Echoing ist nicht der richtige Weg, um Informationen zu übergeben. Es wäre einfacher, wenn Sie Ihr $ result -Array in json konvertieren, damit es für js systematischer ist. Versuchen:

http://php.net/manual/en/function.json-encode.php

So sollte es in etwa so aussehen:

var forbiddenWords = <?=json_encode($result)?>; 
+0

Erzeugt Array von Objekten. '$ result' muss zuerst der erwarteten Ausgabestruktur zugeordnet werden – charlietfl

+0

var verbotene Wörter = [{" rest_word ":" phone "}, {" rest_word ":" Nummer "}, {" rest_word ":" Adresse "}]; –

+0

gibt es eine Ausgabe wie diese .. –

1

Sie einfach json_encode Funktion für convert PHP-Array in JSON/Javascript-Objekt oder Array

var forbiddenWords = [<?php foreach($result as $res) { echo $res->rest_words; } ?>]; 

verwenden können Ersetzen Sie es durch

<?php 
$arr=array(); 
foreach($result as $res) { $arr[]=$res->rest_words; } 
?> 
var forbiddenWords = <?php echo json_encode($arr); ?>; 

OR

var forbiddenWords = <?php echo json_encode(array_map(function($record){ return $record->rest_words; }, $result)); ?>; 
+0

zugeordnet werden der Code gibt einige Syntaxfehler. –

+0

Ich habe ein paar Bugfixes gemacht – NDM

+0

Kannst du mir einen Fehler zeigen? –