jQuery检查<input>是否存在并且有一个值

我有以下例子:

<input type="text" class="input1" value="bla"/> 

有没有办法来检查这个元素是否存在,并在一个语句中有一个值? 或者,至less,那么短一些

 if($('.input1').length > 0 && $('input1').val() != '') 

在这里遇到一英里长的条件就让人沮丧。

如果input不存在,input将不会有值。 尝试这个…

 if($('.input1').val()) 

你可以这样做:

 if($('.input1').length && $('.input1').val().length) 

当值为0时, length在条件中评估为false

你可以做这样的事情:

 jQuery.fn.existsWithValue = function() { return this.length && this.val().length; } if ($(selector).existsWithValue()) { // Do something } 

就这一点来说,我在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; } 

所以,你会得到undefined""null – 所有这些在if语句中评估为false。

我会做这样的事情: $('input[value]').something 。 这样可以find所有有价值的东西,并对它们进行操作。