正确的IF语句语法

时间:2012-03-16 12:27:10

标签: javascript syntax if-statement

有谁能告诉我为什么这个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>

修改...

如果人们认为我因为没有提供错误信息而浪费时间,我很抱歉 - 但Firebug根本就没有给我任何有用的东西 - 如果是我会在这里发布它。我是一个经验丰富的PHP程序员,但对jQuery来说相当新,所以我承认我仍然要掌握编写语言和调试它。我想张贴一张Firebug响应的屏幕截图,但作为一个新用户,我不被允许......我得到的只是行号栏中的“红色错误圈/黄色游戏三角形”图标(“我在上面显示的那一行上的“标签”......除非你能告诉我除“脚本”和“控制台”面板之外的其他地方,否则没有别的东西了吗?

另一个编辑...

嗯,我通过看看Cristoph的建议来解决这个问题。它基本上是相同的解决方案,但我没有将其称为函数,而是将其称为“内联”。我不完全确定这两种技术之间的区别是什么,或者它是否仅仅是我遇到的本地问题,但我的新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();
        }
    });
});

我将查看您的其他评论,看看我是否可以简化它,但至少我现在有一个工作基线!谢谢你的时间,每个人:)

2 个答案:

答案 0 :(得分:1)

尝试将评估更改为:

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

答案 1 :(得分:1)

首先,是真的抛出错误,还是根本不起作用?

根据我对你的代码的理解,你的if条件应该是:

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

第二:用计时器做这件事是个坏主意。

引入一个eventhandler来检查一旦inputvalue发生了变化就好了:

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

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

});

P.S。 对Javascript的深入了解:因此,空字符串被视为“虚假” username === ""可以写成!username。但请注意,undefinednullfalse0NaN也被视为“虚假”!这意味着,你无法区分它们。出于这个原因,我更喜欢username === ""note the === !

相关问题