2017-02-24 72 views
-1

我有一个输入,我想检查它是否为空。我使用维基百科的API来获取信息,这是AJAX部分:检查元素值是否为空或与Jquery

$.ajax({ 
    type: 'GET', 
    url: searchedUrl, 
    async: false, 
    dataType: 'json', 
    success: function(data){ 

     var length = data[1].length; 
     var inputValue = $('#searchInput').val(); 
     console.log(inputValue); 

     if (!$('#searchInput').val()){ 
     error = true; 
     console.log('err'); 

     } else { 
     if (error = true){ 
      $('#errorMsg').html('Search error').fadeOut(); 
     } 
     $('.title').css('margin-top', '30px'); 
     $('#output').removeClass('hidden'); 
      for (var i = 0; i < length; i++){ 
      $('#output').prepend('<li><a href='+data[3][i]+'>'+data[1][i]+'</a><br>'+data[2][i]+'</li>'); 
      } 
     } 
    }, 
    error: function(err){ 
    error = true; 
    $('#errorMsg').html('Search error').fadeIn(); 
    } 
}); 

然而,当它成功,我希望它检查输入的值是否为空。我使用IF条件,但它不会在控制台中写入'err'。这就像它忽略了一切,如果值是空的。我也试过这样的条件:

if (inputValue !== ''){ 

// Error; 

} 

但它不工作。

PS:这是我的jsfiddle:https://jsfiddle.net/dietic/sdfu967y/

谢谢您的帮助!

+0

'if(inputValue.length){...}'!如果长度为'0',那么'if'主体将不会被执行。 –

+0

你为什么不放一个调试器,看看那个时候有什么价值? –

+0

值是“”但它仍然没有任何作用。 –

回答

0

感谢您的答案,但我发现它不工作。 我尝试检查,如果在该行有数据或者之前没有得到数据的长度:

success: function(data){ 

    var length = data[1].length; 
    var inputValue = $('#searchInput').val(); 
    console.log(inputValue); 

它把var length = data[1].length;后,我检查了输入和它的工作。

谢谢!

1

您正在进行!==检查,检查类型和值。这意味着如果inputValuenullundefined,您的inputValue !== ''将是true

为了防止这种情况,根本就if (inputValue) { ... }检查输入值不是nullundefined'',或0

+0

这不起作用。我会在一秒钟后发表小提琴。 –

+0

https://jsfiddle.net/dietic/sdfu967y/ –

+0

在JS第25行中,你有'if(error = true)'应该是'if(error == true)'。您应该也可能返回或抛出该函数以防止运行其余部分。 –

-1

你可以写只是如果($( '#searchInput')。VAL())

+0

这就是我所拥有的。 –

+0

对不起 - 没有想法结束,所以尝试-if(!($('#searchInput').val()))也许帮助... –

1

我不知道你正试图在这里做。但让我澄清这一点。

您的inputValue可以是undefined,null"have something"。如果您拨打if(inputValue) // undefined or null or "",它将等于if(false)

如果if(inputValue) // "blah blah"它将等于if(true)

因此,首先您需要先检查它是否是null or undefined,如果您想确保它不是空的,请致电.length

+0

我刚刚发布哈哈哈,我发现之前你发布的答案。您可以查看我前一段时间在Liam Gray所做的评论。这是正确的答案+1。不管怎么说,多谢拉! –

+0

这在技术上是错误的,'如果(inputValue)'对于'null','undefined',*和*''''将是错误的。即使容易混淆的长度为0的数组为真,长度为0的字符串也是错误的。 –