Webdesign in Siegen

[Javascript] Abgleich Einagbewert mit Wert in Liste

Fragen zum Thema HTML und CSS können hier gestellt werden

Moderatoren: Basti, Ingo

[Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon djblueprint am 07.02.2008, 23:10

Hi,

ich möchte eine Eingabe in einem Formularfeld mittels Javascript dahingend überprüfen, ob der Eingegebene einem Wert von mehreren in einer Liste (extra datei, z.B. liste.txt) gespeicherten Werten entspricht. Die Funktion soll als einzigen Parameter die Eingabe erwarten und einen boolschen Wert liefern, der angibt, ob die Eingabe einem Wert aus der Liste exakt entspricht oder nicht.

Leider bin ich im Javascripting nicht sonderlich bewandert und freue mich daher über jede Hilfe!

Danke im Voraus
Sascha
Bild
Benutzeravatar
djblueprint
Mitglied
 
Beiträge: 32
Registriert: 14.03.2006
Wohnort: Nds.

Re: [Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon Guillermo am 07.02.2008, 23:14

Hey Sascha, wieso machst du das nicht mit PHP? Das würde doch einfacher sein oder MUSST du es mit Java machen?
Gebildet ist der, der weiß, wo er findet, was er nicht weiß.
Benutzeravatar
Guillermo
Mitglied
 
Beiträge: 413
Registriert: 01.10.2007
Wohnort: Auerbach i.d.Opf

Re: [Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon Ingo am 07.02.2008, 23:48

Hi.
Naja, eine Prüfung per JavaScript hätte den Vorteil, dass die Seite sofort auf z.B. fehlerhafte Eingaben
reagieren kann, ohne dass die Daten erst mal wieder an den Server geschickt werden müssen ... das klappt
aber andererseits nur, wenn JavaScript aktiv ist. - Wie auch immer, meine Idee zum Thema sieht so aus:

Code: Alles auswählen
  <script type="text/javascript">
  liste = new Array('Apfel', 'Birne', 'Zitrone');        // Liste erlaubter Eingaben

  function isValid(eingabe)
  {
    var result = false;

    for (var i=0; i<liste.length; i++)                         // wir gehen durch die Liste und ...
    {
      if(eingabe.toLowerCase() == liste[i].toLowerCase())      // ... vergleichen case-unabhängig
      {  result = true; break; }                // bei Treffer result setzen und Schleife verlassen
    }
    // alert(result);                                          // debug
    return result;
  }
  </script>

Im HTML-Teil dann z.B.

  <form action="#" method="post" >
    Obstsorte: <input type="text" name="obst" id="obst" size="30" />
  </form>
 
  <button type="button" value="hier" onClick="isValid(document.getElementById('obst').value);">
  Eingabe prüfen</button>

Der Prüfen-Button ist hier natürlich nur ein Platzhalter, damit man das Script so testen kann.

Gruß, Ingo :)

Edit: Ich sehe gerade: die Liste soll aus einer Datei gelesen werden? Oha! Ich fürchte, dass geht nicht;
JavaScript hat -den Göttern des WWW sei's gedankt- keine Zugriffsrechte auf das Dateisystem. Nicht
auszudenken, was auf Millionen Rechnern los wäre, wenn jedes Script einfach Dateien auch nur lesen,
geschweige denn schreiben oder ausführen dürfte :staun: :engel: :devil: (Ausnahme: allenfalls Cookies).
Die beste Browserweiche ... sitzt zwischen den Ohren ;o]
Benutzeravatar
Ingo
Moderator
 
Beiträge: 580
Registriert: 01.04.2007
Wohnort: Neuss/NRW

Re: [Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon Guillermo am 08.02.2008, 14:39

Also ich bin wirklich eine Laie, aber das interessiert mich, wieso ist es denn schlecht wenn Java nicht auf Datein zugreifen kann? (Dumme Frage ? ^^)
Gebildet ist der, der weiß, wo er findet, was er nicht weiß.
Benutzeravatar
Guillermo
Mitglied
 
Beiträge: 413
Registriert: 01.10.2007
Wohnort: Auerbach i.d.Opf

Re: [Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon Basti am 08.02.2008, 14:45

Es ist ja andersrum, also JavaScript kann nicht einfach so auf Dateien zugreifen (Java ist übrigens etwas anderes ;) ) und das ist ja wie Ingo bereits sagte gut so, ansonsten wäre es ja viel zu leicht, mit JavaScript Manipulationen etc. vorzunehmen.

Aber man könnte beispielsweise mit PHP die Datei einlesen und dann den JavaScript-Array damit erzeugen. Dann könnte man sich aber überlegen, die Überprüfung direkt mit PHP und dann nach Abschicken der Datei zu machen.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1889
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Re: [Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon djblueprint am 08.02.2008, 15:06

Hi,

erstmal danke für die schnellen Antworten. Also es ist so, dass die Abfrage wie oben geschrieben zwingend mit JavaScript gemacht werden muss, da ein anderes Script das verwendet wird einzig den boolschen Wert, den die Abfrage liefern soll als Eingabe erwartet. Daher fällt PHP für die Prüfung auch flach. Es dürfte allerdings möglich sein PHP dazu zu verwenden die auf dem Server liegende Datei mit den gültigen Ausdrücken einzulesen und dann das JavaScript-Array damit zu erzeugen. Wie müsste denn dann da die Übergabe sein?
Gruß
Sascha
Bild
Benutzeravatar
djblueprint
Mitglied
 
Beiträge: 32
Registriert: 14.03.2006
Wohnort: Nds.

Re: [Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon Basti am 08.02.2008, 15:28

Du kannst praktischerweise ähnlich wie in PHP einfach einzelne Arrayelemente hinzufügen, also so:

Code: Alles auswählen
var options = new Array();

options[0] = 'Apfel';
options[1] = 'Birne';
options[2] = 'Zitrone';


Mit PHP könntest du ja nun einfach eine Schleife mit hochzählender Zahl benutzen, um alle Arrayelemente "auszugeben".

Code: Alles auswählen
<?php

$optionen = file('datei.txt'); // Datei einlesen

for($i=0; $i<count($optionen); $i++)
{
  $option = $optionen[$i];
  echo "options[$i] = $option;\n";
}

?>


Die file()-Funktion ist vermutlich am praktischsten für dich, da sie die jeweilige Datei automatisch als Array zurückgibt und du dann einfach in jede Zeile der Datei eine Option schreiben könntest.
Danach wird dann einfach der nötige JavaScript Code ausgegeben.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1889
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Re: [Javascript] Abgleich Einagbewert mit Wert in Liste

Beitragvon Guillermo am 09.02.2008, 12:30

Ja gut da komm ich zwar nichtmehr mit, aber ich hab schon immerhin gelernt, dass es Java und Javascript gibt :)
Gebildet ist der, der weiß, wo er findet, was er nicht weiß.
Benutzeravatar
Guillermo
Mitglied
 
Beiträge: 413
Registriert: 01.10.2007
Wohnort: Auerbach i.d.Opf


Zurück zu HTML/CSS

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast