未捕获的类型错误jquery

时间:2015-04-20 08:30:36

标签: javascript jquery

我的代码不断抛出错误

  

未捕获的TypeError:无法读取null

的属性“0”

如果没有URL进入文本框,就会发生这种情况。它工作正常,但继续抛出该错误。

如何解决此错误?

这是我的代码:

$('.ver').on('keyup', function(){
if($(this).val().match(/\b(https?):\/\/([\-A-Z0-9.]+)(\/[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#\/%=~_|!:,.;]*)?/i)[0].toString().length > 24)
//do something
});

如果条件我只需要1行。(qcube jQuery条件)

1 个答案:

答案 0 :(得分:2)

如果没有匹配项,

match() 将返回null。所以你需要检查

$('.ver').on('keyup', function() {
  var match = $(this).val().match(/\b(https?):\/\/([\-A-Z0-9.]+)(\/[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#\/%=~_|!:,.;]*)?/i);
  if (match)
    if (match[0].toString().length > 24)
    //do something
});

$('.ver').on('keyup', function() {
  var match = $(this).val().match(/\b(https?):\/\/([\-A-Z0-9.]+)(\/[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#\/%=~_|!:,.;]*)?/i);
  if (match? match[0].toString().length > 24 : false)
  //do something
});

您也可以使用 && 运算符

$('.ver').on('keyup', function() {
  var match = $(this).val().match(/\b(https?):\/\/([\-A-Z0-9.]+)(\/[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?(\?[A-Z0-9+&@#\/%=~_|!:,.;]*)?/i);
  if (match && match[0].toString().length > 24 )
  //do something
});

如果第一个表达式返回true,它将仅评估第二个表达式

相关问题