如何使用jQuery检查输入值是否包含数组中的值?

时间:2016-06-29 12:09:36

标签: jquery json

我有一个网站需要检查用户输入的值是否包含色情网站的URL,所以我可以拒绝输入

使用:Chrome

$porn = [''];
$.getJSON('https://cdn.rawgit.com/aredo/porn-site-list/master/sites.json',function(data){
  $(data).each(function(index,value){
    $pornlist = value.host;
    $porn.push($pornlist);
  });

$('.urlinput').on('input',function(){
  $text = $(this).val();

  if (jQuery.inArray($porn,$text) != -1) {
    //Porn site not allow
    console.log('in webiste')
  } else {

    //Not porn site allow
      console.log('not in website')
  }

  });

});

5 个答案:

答案 0 :(得分:2)

jQuery.inArray($text, $site) >-1是关键。如果没有匹配,则返回-1而不是索引。

演示:http://codepen.io/8odoros/pen/aZJPgV

$site = ['google','facebook','twitter'];

//$('.urlinput').on('input',function(){
  //$text = $(this).val();
  $text = 'facebook';

  if (jQuery.inArray($text, $site) >-1) {
    console.log('in webiste')
  }else {
    console.log('not in website')
  }

// });

答案 1 :(得分:2)

尝试:

$site = ['google','facebook','twitter'];
$text = 'facesbook';
if (jQuery.inArray($text, $site)  !== -1 ) {
    console.log('in webiste')
}else {
    console.log('not in website')
}

答案 2 :(得分:1)

您的问题是将结果与true进行比较。 $.inArray(与indexOf一样)返回一个整数值。 -1如果找不到该元素,并且如果找到该元素,则它在数组中为索引。因此,如果在索引true找到元素,则在-1> 0false时,您的逻辑将返回0

要解决此问题,请与-1进行比较:

if (jQuery.inArray($text, $site) != -1) {
    console.log('in webiste')
} else {
    console.log('not in website')
}

答案 3 :(得分:1)

$.inArray($string, $array)返回数组中元素的索引(如果它存在于数组中)。如果未找到该元素,则返回-1

$site = ['google', 'facebook', 'twitter'];
$text = 'facebook';
if ($.inArray($text, $site) !== -1) {
  console.log('in webiste')
} else {
  $.log('not in website')
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 4 :(得分:-1)

您需要运行循环并测试值

for ( var i = 0; i < $site.length; i++){
 if ( $site[i] == $text) {
    console.log('in webiste')
  }else {
    console.log('not in website')
  }
}