• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Was is hierdran falsch?

Michael B.

Moderator
Also, hab mir ne Abfrage auf mehrer Felder aufgebaut, die einige Bedingungen hat:

Code:
<SCRIPT>

	function CheckFields()
	{

	for(i=0; i<document.forms[0].elements.length-1; ++i)
	
		for(ii=1; ii<document.forms[0].elements.length-1; ++ii)
			
			if (Trim(document.forms[0].elements[document.forms[0].elements[i].selectedIndex].value) == '')
			{
						
			} Else {
			
				if (Trim(document.forms[0].elements[document.forms[0].elements[i].selectedIndex].value) == Trim(document.forms[0].elements[document.forms[0].elements[ii].selectedIndex].value))
			
				{
					alert('Feld: ' + document.forms[0].elements[document.forms[0].elements[i].selectedIndex].value + ' hat denselben Wert wie Feld: ' + document.forms[0].elements[document.forms[0].elements[ii].selectedIndex].value);
					return false;
				}
			}
			
	}

</SCRIPT>

Dieser Code soll verhindern, das Selects doppelt gemacht werden, und er soll die leeren Felder irgnorieren.

Leider sagen mir meine Browser, das bei der Else Stelle ein Fehler ist, und ein ; and der Stelle fehlt.

Jemand ne Idee?
 
ich hab zwar keine ahnung was du damit bezwecken willst, aber auf dem ersten blick würd ich sagen mach einfach das zweite if raus und setze die anweisung hinter else! nach der anweisung nach dem ersten if sollte unten die schleife mit "break;" abgebrochen werden! so nun müsste das rauskommen was du vor hast denke ich mal!
 
Fehler gefunden *vorKopfhau*

Das Else ist gross geschrieben =) Das E klein gemacht, schon gehts, auch wenns falsch läuft.

Mal sehn, vielleicht bekomm ichs ohne Hilfe korrekt zum laufen (Ich JavaScript newbie=))

MfG
 
ok, dann is ja alles klar!
und sorry des wo ich da geantwortet hab, da hab ich dich irgendwie falsch verstanden
hab irgendwie was falsch gelesen und dachte des script läuft falsch dabei wars ja nurn
syntax fehler
 
Hm, jetzt bekomm ich langsam Kopfschmerzen, sitz jetzt seit 8 Stunden an dem bissl Code.

Problem:

Ich hab 12 Dropdownboxen. Jede darf nur einmal einen Wert haben. Befühlt wird das ganze automatisch aus einer Datenbank, die Seite ist ne ASP Seite.

Beim Submit macht er die Überprüfung, läuft aber falsch rein.

Sofort kommt der Fehler, "Feld 1: Entity hat denselben Wert wie Feld 1: Entity."

Öhm ja. Er vergeicht also auch sich selber. Soll er aber nicht. Er soll das aktuelle Element mit allen Vergleichen, ausser sich selber. Hm, mal sehen, ich verschachtel dei If Anweisung noch nen Bissl mehr. Wenn trotzdem jemand ne Lösung sieht (Quelltext wie oben, hat sich bis auf das E in else nix geändert), soll ers ruhig machen, dümmer werd ich nicht dadurch =)

MfG
 
Dat löppt ???

Moin moin Michael,

also wenn das läuft, ist es mehr oder weniger ein Wunder, Du hast die geschwungenen Klammern
bei der For-Schleife vergessen, und Deine Abfrage ob das Feld leer ist würde ich nicht über ==""
realisieren sondern über !="", dann sparst Du Dir das else <smile>.
Ich schreibs mal erstmal etwas um.
Apropos die Punkte am Zeilenanfang mußten sein, sonnst wird es unübersichtlich, gehören
da logischerweise also nicht hin.

Michael B. schrieb:
Code:
<SCRIPT language="javascript">
<!--
function CheckFields() {
..for(i=0; i<document.forms[0].elements.length-1; ++i){
....for(ii=1; ii<document.forms[0].elements.length-1; ++ii){
......if (Trim(document.forms[0].elements[document.forms[0].elements[i].selectedIndex].value) != ''){
........if (Trim(document.forms[0].elements[document.forms[0].elements[i].selectedIndex].value) == Trim(document.forms[0].elements[document.forms[0].elements[ii].selectedIndex].value)){
..........alert('Feld: ' + document.forms[0].elements[document.forms[0].elements[i].selectedIndex].value + ' hat denselben Wert wie Feld: ' + document.forms[0].elements[document.forms[0].elements[ii].selectedIndex].value);
..........return false;
........}
......}
....}
..}
}
//-->
</SCRIPT>

In Deine abfragen hab ich mich nun nicht weiter eingelesen, ist hier einfach zu unübersichtlich,
aber es wird schon stimmen.
Aber sag mal, ich bin nun 'ne blinse was ASP betrifft, macht es nicht mehr Sinn, alle Einträge in
Feldvariablen zu speichern und die Dropdownboxen dann von da aus zu erstellen?
fragend ...

Marko
 
Hab noch andere Sachen gefunden =) Werd das ganze mal komplett umschreiben müssen.

Wegen ASP:

Die Inhalte werden bei Aufruf der Datei über eine Funktion StartConditions aus der Datenbank aufgerufen, und alle 12 Boxen haben dieselben Werte =)

Oder was meintest du?
 
Ich meinte, ob es nicht einfach ist, die Daten in eine Feldvariable zu laden und von da aus die Boxen aufzubauen, im zweifelsfalle könntest Du die Feldvariable vorher auch nach strich und Faden durchchecken, bevor Du die Boxen erstellst, wenn ASP dies nicht bietet.

Marko
 
Ich blick jetzt nicht durch, was du meins.

Also, ich erklär mal Schritt für Schritt, was mein Dialog macht.

Aufruf ->
Includes werden verabeitet für den menüaufbau und Globale Funktionen ->
Call StartConditions gefunden ->
Function StartConditions werden aufgerufen ->
Call DBSelect() wird aufgerufen ->
DBSelect wird ausgeführt, und greift per SQL auf die Datenbank zu ->
Recordsets mit ergebnissen werden zurückgegebn. ->
Array wird mit ergebnissen befüllt ->
Der Quelltext wird weiter verarbeitet ab dem Punkt Call StartConditions im Quelltext.
For-Schleifen füllen automatisch alle ComboBoxen aus, und Selectieren gewisse Werte vor, die in der Db schon an der Stelle waren ->
Seite wird angezeigt.

Nacheditier: Alle 12 Checkboxen müssen dieselben Werte zur Auswahl haben, weil es gilt 12 Felder der Datenbank mit nem Update zu aktualisieren. Es ist nur so, das DorpDown Box 1 nicht denselben selektierten Wert haben darf wie DropDown Box 2 oder 3 oder oder oder. Jeder Wert darf nur einmal selektiert sein.

Und das alles ist VBScript, VisualBasic, HTML und SQL, hat also nix mit Java zu tun, falls du das meinst.
 
Zuletzt bearbeitet:
Auflösung

Achso, hier noch die Auflösung meines Problems, jetzt klappt es =)

Code:
<SCRIPT>

function CheckFields()
{

 for(i=0; i<document.forms[0].elements.length - 1; ++i)
 {

  for(ii=1; ii<document.forms[0].elements.length - 1; ++ii)
  {

    if (Trim(document.forms[0].elements[i].options[document.forms[0].elements[i].selectedIndex].value) != '')
    {

      if (i != ii)
      {

          if (Trim(document.forms[0].elements[i].options[document.forms[0].elements[i].selectedIndex].value) == Trim(document.forms[0].elements[ii].options[document.forms[0].elements[ii].selectedIndex].value))
         {

                alert('Feld: ' + (i + 1) + ' : ' +  document.forms[0].elements[i].options[document.forms[0].elements[i].selectedIndex].value + ' hat denselben Wert wie Feld: ' + (ii + 1) + ' : ' + document.forms[0].elements[ii].options[document.forms[0].elements[ii].selectedIndex].value);
	return false;
          }
        }
      }
    }
  }
}
</SCRIPT>

=)

MfG
 
Der Schleier hebt sich ...

Sorry, ich weiß auch grad nicht, wo ich hingedacht habe. Du hast also 12 Auswahlboxen mit identischem inhalt, jede logischerweise mindestens 12 Einträge und Du möchtest jetzt, das wenn ich in der ersten Box den ersten Eintrag wähle und in der zweiten dito, da ich eine Fehlermeldung bekomme und aufgefordert werde diesen Eintrag zu ändern. Richtig?

Marko
 
Genau, und das beim Submit diese Function die jetzt ja endlich geht durchstartet =)

Wie gesagt, habs geschafft =)

Trotzdem Danke

MfG

Michael (nein, nicht DER Michael =))
 
Zurück
Oben