• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

get element by id auf leer abfragen..

Status
Für weitere Antworten geschlossen.

win2k

Neues Mitglied
Hallo zusammen wie kann ich ein Feld
document.getElementById("testfeld").value auf leer abfragen?

Code:
if (document.getElementById("testfeld").value == " ")

hier würde ich ja jetzt einfach auf ein leerzeichen abfragen..
wie würde ich es auf komplett leer abfragen? Mit empty funktioniert es nicht:(

Danke! :)
 
funktioniert nicht :(
ich habe 2 abfragen

Code:
    if(!document.getElementById("test1").value) 
        {
            // blabla fehlermeldung
        }
        
        if(document.getElementById("test1").value == "") 
        {
            // blabla fehlermeldung
        }

der prüft jedesmal nur ob was drin steht oder nicht, d.h. er akzeptiert auch leerzeichen ..
 
Ich teste das eben mal aus ;)
Editiere gleich diesen Beitrag. Also wachsam sein :D


EDIT:

also folgender Code hat wunderbar funktioniert:
PHP:
window.onload = function() {
        document.getElementById("but").onclick = function(){
          // Prüfen ob Element existiert
          if (document.getElementById("test")) {
            // auf Text prüfen
            if (document.getElementById("test").value == "") {
              alert("leer");
            }
            else {
              alert("nicht leer");
            }
          }
        };
      };
Was willst du denn damit testen?:
Code:
if(!document.getElementById("test1").value)
 
Zuletzt bearbeitet:
"" akzeptiert sicher keine Leerzeichen, das ist nur ein Leerstring!

Aber schau mal in Deine Fehlerkonsole, vielleicht ist das Objekt selbst nicht definiert, dann bricht JS die weitere Verarbeitung nämlich ab und irgendwelche Checks, die Du danach machst, werden schlichtweg nicht mehr ausgeführt!
 
also das Objekt bzw. das Feld existiert schon.
Die erste Prüfung funktioniert auch. Er prüft jedesmal nur ob etwas im Feld steht wenn nicht Fehlermeldung Feld ausfüllen. Wenn ich dann zum testen ein leerzeichen eingebe springt er zur nächsten prüfung vom select feld und prüft ob etwas ausgewählt wurde oder nicht.
Jedoch bleibt die zweite Prüfung auf meinem ersten Feld verschollen^^
 
Ich habe ein Feld da soll man eine Überschrift eingeben,
deswegen darf das Feld nicht leer sein.
Sobald ich aber ein Leerzeichen eingebe sieht er das als ok an weil es ja für ihn ein wert ist..
 
Habs mir fast gedacht, dass du das meinst. Du willst also vorhergehende Leerzeichen vorerst entfernen damit du weisst ob nicht nur ein Leerzeichen eingegeben worden ist.
Hab folgende Funktion gefunden

Code:
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}

Würde aus " hi" => "hi" machen.
Und aus " " dementsprechend ""
 
ah genau so ist es!
kann ich die Funktion jetzt direkt in JS hineinschreiben?
oder in php und ich ruf die dann in js auf?
 
Die von mir gepostete Funktion ist eine javascript Funktion. Das heisst sie kommt in den Script Bereich deiner HTML bereich (bzw in die js File die du importierst :))

Die Abfrage würde dann so lauten
Code:
if (ltrim(document.getElementById("test").value) == "") {}
 
sehr schön!
Vielen dank, funktioniert hervorragend :)

hast du die Funktion selbst gebastelt mit dem regulären ausdruck oder findet man die auch bei php manual?
 
Zuletzt bearbeitet:
wie würde ich es auf komplett leer abfragen? Mit empty funktioniert es nicht:(
Um mal die Ausgangsfrage zu beantworten, so prüfst du eine Zeichenkette ob sie leer ist:
Code:
 if(!document.getElementById("testfeld").value) {....}
Und die trim Funktion würde ich etwas anders formulieren:
Code:
String.prototype.ltrim = function () {
    return this.length ? this.replace(/^\s+/g, '') : '';
};
Dann kann man später schreiben:
Code:
 if(!document.getElementById("testfeld").value.ltrim()) {....}
 
jein, das ist so nicht richtig.

Der strikte Vergleichsoperator === wird von vielen JS Gurus empfohlen, damit keine automatische Typkonvertierung erfolgt. Das ist aber nur ein Problem, wenn du unterschiedliche Typen auf einen bool'schen Wert prüfst. Denn dann erfolgt immer eine Konvertierung zu einer Zahl.

Um das zu verdeutlichen:
Code:
var z = '0';

alert(
(z==true) // => false
+ '\n' + 
(!z==!true) // true
);
Das ist eigentlich unlogisch. Wenn z nicht true/wahr ist, dann müßte not z (!z) auch nicht wahr (!true) sein. Ist es aber nicht, weil JS bei einem Vergleich den bool'schen Typ in eine Zahl umwandelt. Also Number(true) bzw. Number(false) macht. D.h. JS vergleicht folgendes:
Code:
var z = '0';

alert(
(0==1) // => false
+ '\n' + 
(!0==!0) // true
);
Wenn man exakt zwei Strings vergleichen möchte, sollte man auch den strikten vergleichsoperator verwenden.


Und wenn man nur auf true/false testen will, sollte man immer nur den NOT Operator verwenden.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben