Javascript 是否满足语句条件,但未执行内容?

Javascript 是否满足语句条件,但未执行内容?,javascript,jquery,Javascript,Jquery,我有两个if()语句,它们的条件都符合和表单字段中的默认值。我通过将值分配给变量并写入变量来测试这一点。(0和Url) 然而,似乎这两条if()语句的内容都没有正确执行 这里有一个指向我的JSFIDLE的链接: 如果您能提供任何关于为什么会发生这种情况的编辑/解答,我们将不胜感激 以下是您询问的代码: $('#post-form').click( function() { var geo_select_val = $('select[name=g_country\\[1\\]]').

我有两个
if()
语句,它们的条件都符合
表单字段中的默认值。我通过将值分配给变量并写入变量来测试这一点。(
0
Url

然而,似乎这两条
if()
语句的内容都没有正确执行

这里有一个指向我的JSFIDLE的链接:


如果您能提供任何关于为什么会发生这种情况的编辑/解答,我们将不胜感激

以下是您询问的代码:

$('#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");
        }
    }
});
当我在这个单击函数中设置断点,然后单击Post表单div时,
geo\u select\u val
返回为
“0”
,这意味着
if(!geo\u select\u val)
将失败,因为
geo\u select\u val
确实有一个值,因此第一个if条件将永远不会执行

也许您希望第一个if条件为:

if (geo_select_val != "0") {
这将告诉您是否选择了默认值以外的其他值(假设您向具有不同值的select标记添加了其他选项)。

更改此行:

var geo_select_val = $('select[name=g_country\\[1\\]]').val();  
为此:

var geo_select_val = parseInt($('select[name=g_country\\[1\\]]').val());  
事情是
geo\u select\u val
实际上是
“0”
,而不是
0
。如果字符串为空,将字符串转换为布尔值只会导致
false
<代码>“0”不是空的,因此它被评估为true。既然你要去
!geo_select_val
,它永远不会进入


警告:只有在确保所有值都是数字的情况下,此修复才会起作用。如果不是这样,请检查是否与
“0”

相等。请通过告诉我们您预期会发生什么以及现在正在发生什么意外情况来定义“两者都不…正确执行”。啊,抱歉。从PHP到JS的转换比我想象的要困难,因为在PHP中0被认为是错误的。谢谢你的回答,当计时器下降时我会接受。
0
这个数字在javascript中也被认为是
false
。但是字符串
“0”
不是
false
值。jQuery的
.val()
返回一个字符串,而不是一个只有在为空字符串时才会为false的数字。