有谁能告诉我为什么这个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();
}
});
});
我将查看您的其他评论,看看我是否可以简化它,但至少我现在有一个工作基线!谢谢你的时间,每个人:)
答案 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
。但请注意,undefined
,null
,false
,0
和NaN
也被视为“虚假”!这意味着,你无法区分它们。出于这个原因,我更喜欢username === ""
(note the === !)