Как я могу игнорировать два нулевых или неназначенных значения в jQuery?

У меня есть этот код для сравнения двух значений, чтобы убедиться, что они идентичны:

$(document).on("blur", "[id$=boxSection5Total]", function (e) {
    var totalvalue = $(this).val();
    var paymenttotalvalue = $('[id$=boxPaymentAmount]').val();
    if (totalvalue != paymenttotalvalue) {
        console.log("The value in 'Total' does not equal the previous value in 'Payment Total.'");
        alert("The value in 'Total' does NOT equal the previous value in 'Payment Total.' payment total is " + paymenttotalvalue + " and total is " + totalvalue);
    }
    else {
        console.log("The value in 'Total' DOES equal the previous value in 'Payment Total'");
    }
});

Однако, если оба текстовых элемента оставлены пустыми, происходит сбой - они считаются неравными (условие "if (totalvalue != paymenttotalvalue)" истинно).

Как мне реорганизовать код, чтобы он игнорировал случаи, когда оба элемента были оставлены пустыми?

Что-то типа:

$(document).on("blur", "[id$=boxSection5Total]", function (e) {
    var totalvalue = $(this).val();
    var paymenttotalvalue = $('[id$=boxPaymentAmount]').val();
    if ((totalvalue == null) & (paymenttotalvalue == null)) {
        return;
    }
    . . .
});

?

И "boxSection5Total", и "boxPaymentAmount" являются текстовыми элементами (текстовыми полями).


person B. Clay Shannon    schedule 07.07.2015    source источник
comment
Значение не будет «нулевым», а "" == null — ложным. Самым простым и наиболее идиоматичным изменением существующего было бы if (!totalvalue && !paymenttotalvalue) { return; }, но, вероятно, лучше сочетать его с другим условным предложением.   -  person user2864740    schedule 08.07.2015
comment
@up правда, если это исходит из html-формы, это в основном считается пустым значением   -  person itwasntme    schedule 08.07.2015


Ответы (2)


Если вы хотите проверить конкретно значение null, вам следует попробовать что-то вроде этого.

if (totalvalue !== null && paymenttotalvalue !== null && totalvalue != paymenttotalvalue)

Если вы хотите проверить на ложность (см. также здесь: JavaScript: как проверить, не равна ли переменная NULL), вы можете использовать это:

if (totalvalue && paymenttotalvalue && totalvalue != paymenttotalvalue)
person mwoelk    schedule 07.07.2015

Если это на самом деле пустые текстовые значения, используйте....

if(totalvalue === "" && paymenttotalvalue === "")
{
    return;
}

или (я думаю)

if(totalvalue == 1 && paymenttotalvalue == 1)
{
    return;
}
person CommonKnowledge    schedule 07.07.2015
comment
и === вместо == (например, false == на самом деле верно) - person bjfletcher; 08.07.2015
comment
getElementById не будет работать, потому что к элементам Sharepoint добавлена ​​куча греческих, русских, болгарских и т. д., например id=zorbaIvan_bulgarischesSemillaDe0143209870945634-boxSection5Total. - person B. Clay Shannon; 08.07.2015
comment
Вернуть логическое значение в обработчике событий? - person B. Clay Shannon; 08.07.2015
comment
@ Б. Клэй Шеннон Вы можете вернуть то, что хотите. Код, который я добавил, должен был использоваться только как код sudo для примера. - person CommonKnowledge; 08.07.2015
comment
@CommonKnowledge: Ладно, не парься. - person B. Clay Shannon; 08.07.2015