jQuery: Überprüfen, ob der Wert eines Feldes null ist (leer)

101

Ist dies eine gute Möglichkeit, um zu überprüfen, ob der Wert eines Feldes ist null?

if($('#person_data[document_type]').value() != 'NULL'){}

Oder gibt es einen besseren Weg?

ziiweb
quelle
1
Was für ein Element ist #person_data? und was betrachten Sie als NULL-Wert?

Antworten:

170

Der Wert eines Feldes darf nicht null sein, es ist immer ein Zeichenfolgenwert.

Der Code prüft, ob der Zeichenfolgenwert die Zeichenfolge "NULL" ist. Sie möchten stattdessen überprüfen, ob es sich um eine leere Zeichenfolge handelt:

if ($('#person_data[document_type]').val() != ''){}

oder:

if ($('#person_data[document_type]').val().length != 0){}

Wenn Sie überprüfen möchten, ob das Element überhaupt vorhanden ist, sollten Sie dies vor dem Aufruf tun val:

var $d = $('#person_data[document_type]');
if ($d.length != 0) {
  if ($d.val().length != 0 ) {...}
}
Guffa
quelle
31
The value of a field can not be null, it's always a string value.das ist nicht ganz richtig. Ich habe eine selectenthaltende Nr options. Wenn ich das mache .val(), kehrt es zurück null. Jquery 1.7.2
Liam
@Pispirulito: Ich denke nicht, und ich denke nicht, dass es geändert wird. A selectohne optionElemente ist etwas, das Sie normalerweise nicht haben. Es ist ziemlich nutzlos.
Guffa
@Guffa bitte zu unterscheiden, ein Leerzeichen <select>kann mögliche Optionen für Ihren Benutzer enthalten, deren <option>s aus einer Art Validierung stammen.
Malcolm Salvador
Wenn Sie die folgende Lösung verwenden, um einen Platzhalter in Ihrem bereitzustellen select, beginnt dieser mit einem nullWert, da die Option "Deaktiviert" ausgewählt ist. stackoverflow.com/questions/5805059/…
Sygmoral
37

Ich würde auch das Eingabefeld kürzen, da ein Leerzeichen es wie gefüllt aussehen lassen könnte

if ($.trim($('#person_data[document_type]').val()) != '')
{

}
Flipke
quelle
14

Vorausgesetzt

var val = $('#person_data[document_type]').value();

Sie haben diese Fälle:

val === 'NULL';  // actual value is a string with content "NULL"
val === '';      // actual value is an empty string
val === null;    // actual value is null (absence of any value)

Verwenden Sie also, was Sie brauchen.

Darioo
quelle
11

Das hängt davon ab, welche Art von Informationen Sie an die Bedingung weitergeben.

Manchmal ist Ihr Ergebnis nulloder undefinedoder ''oder 0, für meine einfache Validierung verwende ich dies, wenn.

( $('#id').val() == '0' || $('#id').val() == '' || $('#id').val() == 'undefined' || $('#id').val() == null )

HINWEIS : null! ='null'

Allan Felipe Murara
quelle
6
_helpers: {
        //Check is string null or empty
        isStringNullOrEmpty: function (val) {
            switch (val) {
                case "":
                case 0:
                case "0":
                case null:
                case false:
                case undefined:
                case typeof this === 'undefined':
                    return true;
                default: return false;
            }
        },

        //Check is string null or whitespace
        isStringNullOrWhiteSpace: function (val) {
            return this.isStringNullOrEmpty(val) || val.replace(/\s/g, "") === '';
        },

        //If string is null or empty then return Null or else original value
        nullIfStringNullOrEmpty: function (val) {
            if (this.isStringNullOrEmpty(val)) {
                return null;
            }
            return val;
        }
    },

Nutzen Sie diese Helfer, um dies zu erreichen.

Nilesh Moradiya
quelle
dies scheint fast wie isStringNullOrEmptyheißt isStringFalseyund so return !val;funktionieren würde
Mark Schultheiss
0

jquery bietet val()Funktion und not value(). Sie können leere Zeichenfolgen mit jquery überprüfen

if($('#person_data[document_type]').val() != ''){}
Chinmayee G.
quelle
0

Versuchen

if( this["person_data[document_type]"].value != '') { 
  console.log('not empty');
}
<input id="person_data[document_type]" value="test" />

Kamil Kiełczewski
quelle