
Dimskiy
Tengo el siguiente ejemplo:
<input type="text" class="input1" value="bla"/>
¿Hay alguna manera de verificar si este elemento existe y tiene un valor en una declaración? O, al menos, algo más corto que
if($('.input1').length > 0 && $('input1').val() != '')
Me estoy frustrando aquí con las condiciones de una milla de largo.

Brian
La entrada no tendrá un valor si no existe. Prueba esto…
if($('.input1').val())
Podrías hacerlo:
if($('.input1').length && $('.input1').val().length)
length
evalúa a false
en una condición, cuando el valor es 0
.

97ldave
Puedes hacer algo como esto:
jQuery.fn.existsWithValue = function() {
return this.length && this.val().length;
}
if ($(selector).existsWithValue()) {
// Do something
}

KyleMit
Puedes crear el tuyo propio selector personalizado :hasValue
y luego utilícelo para buscar, filtrar o probar cualquier otro elemento de jQuery.
jQuery.expr[':'].hasValue = function(el,index,match) {
return el.value != "";
};
Entonces puedes encontrar elementos como este:
var data = $("form input:hasValue").serialize();
O pruebe el elemento actual con .is()
var elHasValue = $("#name").is(":hasValue");
jQuery.expr[':'].hasValue = function(el) {
return el.value != "";
};
var data = $("form input:hasValue").serialize();
console.log(data)
var elHasValue = $("[name="LastName"]").is(":hasValue");
console.log(elHasValue)
label { display: block; margin-top:10px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<label>
First Name:
<input type="text" name="FirstName" value="Frida" />
</label>
<label>
Last Name:
<input type="text" name="LastName" />
</label>
</form>
Otras lecturas:

Mirza Arsal Chaudhry
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"});
}

BWP
Yo haría algo como esto: $('input[value]').something
. Esto encuentra todas las entradas que tienen valor y opera algo sobre ellas.
Tal vez haga una función auxiliar si usa el mismo tipo de condición muchas veces.
– espejomx
18 de marzo de 2013 a las 16:14
if($(selector).val()) debería funcionar. Si el elemento no existe, devolverá ‘indefinido’ y si existe pero no tiene longitud, devolverá “” (que se evalúa como falso).
– Ben Jacobs
18 de marzo de 2013 a las 16:15
@Benmj ¿’indefinido’ también se evaluaría como falso? Pensé que no lo haría.
– Dimsky
18 de marzo de 2013 a las 16:17
@isherwood Esto no es un duplicado. Quiero saber si el elemento existe Y tiene un valor al mismo tiempo.
– Dimsky
18 de marzo de 2013 a las 16:18
@Dimskiy: no debería
if ($('#foobar').val()) { console.log('You will not see this') }
– Ben Jacobs
18 de marzo de 2013 a las 16:20