Правильный синтаксис для оператора IF - PullRequest
0 голосов
/ 16 марта 2012

Может кто-нибудь сказать мне, почему это утверждение IF не работает, пожалуйста? Я использую jQuery и Firebug, но последний не дает мне никакой полезной информации.

Я просто пытаюсь открыть кнопку «отправить», когда все поля заполнены и скрипт запускается каждые несколько секунд для проверки ввода.

Мой фрагмент кода выглядит примерно так:

function checkForm(){
    var userName = $('#name').val();
    var userContent = $('#content').val();
    var userEmail = $('#email').val();

    // The following line shows me that the values for the fields are all getting picked up properly
    $('#report').html("userName: "+userName+"<br />userContent: "+userContent+"<br />userEmail: "+userEmail);

    // But the following line is throwing some kind of error
    if (userName == "" || userContent == "" || userEmail == ""){
        $('#update').slideDown();
    } else {
        $('#update').slideUp();
    }
}

$(document).ready(function(){

    $('#update').hide();
    setInterval('checkForm()' , 2000);

});

И мой HTML ...

<div id="report"></div>
<form id="submitfact">
  <div id="update">Update Database</div>
  <label><input id="name" name="name" type="text" value="" /><span>Fact submitter's name</span></label>
  <label><input id="email" name="email" type="text" value="" /><span>Fact submitter e-mail address</span></label>
  <label class="content"><span>Fact text</span><br /><textarea id="content" name="content"></textarea></label>
</form>

Edit ...

Я прошу прощения, если люди думают, что я трачу свое время, не предоставляя сообщение об ошибке - но Firebug просто не дает мне ничего полезного - если бы это было, я бы разместил его здесь. Я довольно опытный php-программист, но довольно плохо знаком с jQuery, поэтому я признаю, что до сих пор справляюсь как с написанием языка, так и с его отладкой. Я хотел бы опубликовать снимок экрана с ответом Firebug, но, как новый пользователь, я не имею права ... все, что я получаю, это значок "красный круг ошибки / желтый треугольник воспроизведения" в столбце номеров строк ("скрипт" "tab) в строке, которую я показал выше ... нет ничего другого, если вы не можете сказать мне, где еще искать, кроме панелей" script "и" console "?

Другое редактирование ...

Ну, я исправил это, посмотрев на предложение Кристофа. Это в основном то же решение, но вместо того, чтобы вызывать его как функцию, я помещаю его «в строку». Я не совсем уверен, в чем разница между этими двумя методами или это просто локальная проблема, с которой я столкнулся, но мой новый jQuery выглядит так:

$(document).ready(function(){
    $('#submitfact').keyup(function(){
        var userName = $('#name').val();
        var userContent = $('#content').val();
        var userEmail = $('#email').val();

        $('#report').html(userName + "<br />" + userContent + "<br />" +  userEmail);

        if (userName == "" || userContent == "" || userEmail == ""){
            $('#update').slideUp();
        } else {
            $('#update').slideDown();
        }
    });
});

Я посмотрю ваши другие комментарии, чтобы посмотреть, смогу ли я их упростить, но, по крайней мере, сейчас у меня есть рабочая базовая линия! Всем спасибо за ваше время :) 1024 *

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Прежде всего, действительно ли выдает ошибку или просто не работает?

Насколько я понимаю ваш код, ваше условие if должно быть:

if (!userName === "" && !userContent === "" && !userEmail === ""){
    // show
    $('#update').slideDown();
} else {
    // hide
    $('#update').slideUp();
}

Второе: делать это с таймером - плохая идея.

Представить обработчик событий для проверки после изменения входного значения гораздо лучше:

$("input").change(function(){

  // if all inputs are filled, show Button, else hide it

});

P.S. расширенное понимание Javascript: пустая строка считается «ложной», таким образом username === "" можно записать как !username. Обратите внимание, что undefined, null, false, 0 и NaN также считаются "ложными"! Это означает, что вы не можете их различить. По этой причине я предпочитаю username === "" ( обратите внимание на ===! )

1 голос
/ 16 марта 2012

Попробуйте изменить оценку на:

if (!userName  || !userContent  || !userEmail){
    $('#update').slideDown();
} else {
    $('#update').slideUp();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...