2011-10-17 60 views
0

我有两个if()语句,其条件都满足<select><input>表单字段中的默认值,我通过将这些值分配给变量并写入该变量来测试了这一点。 (0Url)。如果声明条件满足,但内容未执行?

然而,似乎没有if()声明的内容正确执行。

这里有一个链接到我的jsfiddle:http://jsfiddle.net/cfRAk/2/

任何编辑/答案,为什么发生这种情况,将不胜感激!

+0

请界定“既不......正确执行”告诉我们你希望发生什么,什么意想不到的事情正在发生。 –

回答

0

这里就是你问的是代码:

$('#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") { 

如果除了默认的一些其他的价值已被选中,这将告诉你(假设你添加其他选项与不同的价值观是选择标签)。

+0

啊,道歉。从PHP到JS的转换比我想象的更难,因为0在PHP中被认为是错误的。感谢您的回答,我会接受定时器何时下降。 – Avicinnian

+2

'0'数量被认为是'FALSE'在JavaScript了。但是一个字符串'“0”不是'false'值。 jQuery的'.val()'返回一个字符串,而不是一个数字,如果它是一个空字符串,它只会是false。 – jfriend00

1

改变这一行:

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"