jQuery检查<input>是否存在并具有值

Dim*_*kiy 66 javascript jquery

我有以下示例:

<input type="text" class="input1" value="bla"/>
Run Code Online (Sandbox Code Playgroud)

有没有办法检查这个元素是否存在并且在一个语句中有值?或者,至少,任何更短的东西

if($('.input1').length > 0 && $('input1').val() != '')
Run Code Online (Sandbox Code Playgroud)

这里只有一英里长的条件让你感到沮丧.

Bri*_*ian 127

如果输入不存在,则输入将没有值.试试这个...

if($('.input1').val())
Run Code Online (Sandbox Code Playgroud)

  • 我不完全同意信任input元素的value属性.它有时可能是空的(其中没有值),但仍然存在于范围内.所以最好是依靠$('.input1').length> 0然后进行任何处理. (5认同)
  • @Christian: input1 is not a html tag in the above answer but is a class. (3认同)
  • 空字符串的值为假。在控制台`if(“”){true} else {false}`中尝试一下,所以这是正确的答案。 (2认同)

Cur*_*urt 25

你可以这样做:

if($('.input1').length && $('.input1').val().length)
Run Code Online (Sandbox Code Playgroud)

lengthfalse在值为的时候评估条件0.


97l*_*ave 13

你可以这样做:

jQuery.fn.existsWithValue = function() { 
    return this.length && this.val().length; 
}

if ($(selector).existsWithValue()) {
        // Do something
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*nmj 9

只是为了它,我在jQuery代码中跟踪了这一点..val()函数当前从attributes.js的第165行开始.这是相关部分,带有我的注释:

val: function( value ) {
    var hooks, ret, isFunction,
        elem = this[0];

        /// NO ARGUMENTS, BECAUSE NOT SETTING VALUE
    if ( !arguments.length ) {

        /// IF NOT DEFINED, THIS BLOCK IS NOT ENTERED. HENCE 'UNDEFINED'
        if ( elem ) {
            hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];

            if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
                return ret;
            }

            ret = elem.value;

            /// IF IS DEFINED, JQUERY WILL CHECK TYPE AND RETURN APPROPRIATE 'EMPTY' VALUE
            return typeof ret === "string" ?
                // handle most common string cases
                ret.replace(rreturn, "") :
                // handle cases where value is null/undef or number
                ret == null ? "" : ret;
        }

        return;
    }
Run Code Online (Sandbox Code Playgroud)

所以,你要么得到undefined或者""或者null- 所有这些在if语句中都被评为false.