我有以下示例:
<input type="text" class="input1" value="bla"/>
有没有一种方法可以检查此元素是否存在并且在一个语句中是否有值?或者,至少短于
if($('.input1').length > 0 && $('input1').val() != '')
一英里长的条件使这里感到沮丧。
我有以下示例:
<input type="text" class="input1" value="bla"/>
有没有一种方法可以检查此元素是否存在并且在一个语句中是否有值?或者,至少短于
if($('.input1').length > 0 && $('input1').val() != '')
一英里长的条件使这里感到沮丧。
if ($('#foobar').val()) { console.log('You will not see this') }
Answers:
如果输入不存在,则该输入将没有值。尝试这个...
if($('.input1').val())
if("") { true } else { false }这是正确的答案。
您可以这样做:
if($('.input1').length && $('.input1').val().length)
length值为时false,条件为0。
只是为了达到目的,我在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。
您可以创建自己的自定义选择器 :hasValue,然后使用它来查找,过滤或测试任何其他jQuery元素。
jQuery.expr[':'].hasValue = function(el,index,match) {
return el.value != "";
};
然后,您可以找到这样的元素:
var data = $("form input:hasValue").serialize();
或者使用以下命令测试当前元素 .is()
var elHasValue = $("#name").is(":hasValue");
进一步阅读:
if($('#user_inp').length > 0 && $('#user_inp').val() != '')
{
$('#user_inp').css({"font-size":"18px"});
$('#user_line').css({"background-color":"#4cae4c","transition":"0.5s","height":"2px"});
$('#username').css({"color":"#4cae4c","transition":"0.5s","font-size":"18px"});
}