JQuery пустые и HTML-функции - PullRequest
1 голос
/ 12 июня 2011

Привет! Я выполняю проверку на стороне сервера и возвращаю объект JSON с ошибками проверки.Затем простая функция jQuery записывает ошибки в соответствующий div:

function processEmail(data) {
    $("#newEmailError").html(data.newEmail);
    $("#newEmailVerificationError").html(data.newEmailVerification);
    $("#changeEmailMessage").html(data.success); 
}

Это должно работать нормально, но теперь я тестирую свое приложение и пишу неправильный адрес электронной почты, и я получаю правильное сообщение об ошибке.Все выглядит правильно.Но теперь я настраиваю свою электронную почту и отправляю форму и должен получать только сообщение об успехе, но я вижу оба сообщения.Похоже, что div всегда получает последнее значение, если нет соответствующего сообщения.Я думал, что, например, если data.newEmail имеет значение null (ошибки проверки нет, и этот объект является нулевым), div newEmailError получит нулевое значение = будет пустым.Но это просто опускает это.Теперь я должен написать свою функцию следующим образом и использовать .empty ():

function processEmail(data) {
    $("#newEmailError").empty();
    $("#newEmailVerificationError").empty();
    $("#changeEmailMessage").empty();
    $("#newEmailError").html(data.newEmail);
    $("#newEmailVerificationError").html(data.newEmailVerification);
    $("#changeEmailMessage").html(data.success); 
}

Есть ли лучший способ решить эту проблему и не использовать функцию jQuery .empty ()?

Спасибо

Ответы [ 2 ]

2 голосов
/ 12 июня 2011

Вы можете пропустить .empty вызовы, используя ||:

function processEmail(data) {
    $("#newEmailError").html(data.newEmail || '');
    $("#newEmailVerificationError").html(data.newEmailVerification || '');
    $("#changeEmailMessage").html(data.success || ''); 
}

Как вы заметили в комментарии, высказывание .html(undefined) не делает ничего полезного. И вот небольшая песочница для экспериментов с поведением .html:

http://jsfiddle.net/ambiguous/zgbnB/1/

1 голос
/ 12 июня 2011

Я не вижу проблем с использованием empty, однако, если вы не хотите использовать empty, вы можете заставить свой json возвращать пустую строку для значений, которые вы хотите очистить, вместо того, чтобы ничего не возвращать.

В качестве альтернативы, вы можете сделать это, чтобы немного сжать:

$("#newEmailError, #newEmailVerificationError, #changeEmailMessage").empty();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...