我有两个if()
语句,其条件都满足<select>
和<input>
表单字段中的默认值,我通过将这些值分配给变量并写入该变量来测试了这一点。 (0
和Url
)。如果声明条件满足,但内容未执行?
然而,似乎没有if()
声明的内容正确执行。
这里有一个链接到我的jsfiddle:http://jsfiddle.net/cfRAk/2/
任何编辑/答案,为什么发生这种情况,将不胜感激!
我有两个if()
语句,其条件都满足<select>
和<input>
表单字段中的默认值,我通过将这些值分配给变量并写入该变量来测试了这一点。 (0
和Url
)。如果声明条件满足,但内容未执行?
然而,似乎没有if()
声明的内容正确执行。
这里有一个链接到我的jsfiddle:http://jsfiddle.net/cfRAk/2/
任何编辑/答案,为什么发生这种情况,将不胜感激!
这里就是你问的是代码:
$('#post-form').click(function() {
var geo_select_val = $('select[name=g_country\\[1\\]]').val();
if(!geo_select_val) {
var geo_url_val = $('input[name=g_url\\[1\\]]').val();
if(geo_url_val != "http://google.com") {
$('#notification').html("You need to enter a valid url");
}
}
});
当我在此点击功能设置断点,然后单击后表单的div,geo_select_val
回来为"0"
这意味着if(!geo_select_val)
会失败,因为geo_select_val
确实有一个值,所以第一个条件将永远不会被执行。
也许你想在第一,如果条件是:
if (geo_select_val != "0") {
如果除了默认的一些其他的价值已被选中,这将告诉你(假设你添加其他选项与不同的价值观是选择标签)。
啊,道歉。从PHP到JS的转换比我想象的更难,因为0在PHP中被认为是错误的。感谢您的回答,我会接受定时器何时下降。 – Avicinnian
'0'数量被认为是'FALSE'在JavaScript了。但是一个字符串'“0”不是'false'值。 jQuery的'.val()'返回一个字符串,而不是一个数字,如果它是一个空字符串,它只会是false。 – jfriend00
改变这一行:
var geo_select_val = $('select[name=g_country\\[1\\]]').val();
要这样:
var geo_select_val = parseInt($('select[name=g_country\\[1\\]]').val());
的事情是geo_select_val
其实"0"
,而不是0
。如果字符串为空,则将字符串转换为布尔值只会导致false
。 "0"
不是空的,所以它被评估为真。既然你要!geo_select_val
,它永远不会在
警告:如果你确保所有值为数字此修复才有效。如果不是这种情况,检查平等"0"
请界定“既不......正确执行”告诉我们你希望发生什么,什么意想不到的事情正在发生。 –