JavaScript/JQuery - val().length' is null or not an object JavaScript/JQuery - val().length' 为空或不是对象

7

我遇到了错误:“val().length为空或不是对象”,这是代码:

function size(sender, args) {

    var sizeVariable = $("input[id$='txtHello']");
    if (sizeVariable.val().length == 0)
    {
          args.IsValid = false;
     }
}

错误发生在"if"语句中。我试图检查以下内容:
  1. 变量是否存在
  2. 如果变量中有任何内容
我认为问题出在第一点上。我该如何检查文本字段是否存在(以解决此问题)?
6个回答

20

你可以这样测试输入字段是否存在:

if($("input[id$='txtHello']").length > 0) { ... }
如果没有值,val() 将返回 undefined
您可以直接跳到以下内容:
if(!!$("input[id$='txtHello']").val())

由于undefined""都会被解析为false,因此...


5
尝试使用if (sizeVariable.val() == undefined || sizeVariable.val().length == 0)。这样,在尝试查看存在值的长度之前,会首先检查是否有值。

1
为什么@BvdVen使用 ===,而你使用 ==?哪一个是正确的? - gloomy.penguin
在这种情况下,=== 比 == 更严格和更好。 - Steve Jalim

1

在尝试检查长度时,sizeVariable是否为空?



function size(sender, args) {

    var sizeVariable = $("input[id$='txtHello']");

    if (sizeVariable != null)
    {
      if (sizeVariable.val().length == 0)
      {
          args.IsValid = false;
      }
     }
     else
     {
       alert('error');
     }
}


sizeVariable 永远不会为空。如果文本字段不存在,则 sizeVariable 将是一个空的 jQuery 对象,而不是 null。函数 val() 仍然可用于它,但返回 undefined,因此 val().length 不可用。 - David Hedlund

1

请按照以下方式进行检查

if (sizeVariable.val() === undefined || sizeVariable.val().length == 0)

0
在jQuery中,您可以使用以下代码:
if( input.val().length > limit)

或者如果由于某种原因它没有工作,你可以使用:

if( ( input.val() ).length > limit )

0

你试过了吗...?

if( sizeVariable.size() == 0 )
{
    args.IsValid = false;
}

抱歉,伙计,这似乎失败了。 - user532104
抱歉,size() 需要小写。虽然对我来说这似乎是最简单的解决方案。 - baked
该代码检查 $("input[id$='txtHello']") 是否返回任何元素,但它并不检查其 val() 是否包含值,而这是要求的。 - David Hedlund

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接