次の例があります。
<input type="text" class="input1" value="bla"/>
この要素が存在し、1つのステートメントに値があるかどうかを確認する方法はありますか?または、少なくとも、それより短いもの
if($('.input1').length > 0 && $('input1').val() != '')
何マイルも続く条件でここでイライラしているだけです。
次の例があります。
<input type="text" class="input1" value="bla"/>
この要素が存在し、1つのステートメントに値があるかどうかを確認する方法はありますか?または、少なくとも、それより短いもの
if($('.input1').length > 0 && $('input1').val() != '')
何マイルも続く条件でここでイライラしているだけです。
入力が存在しない場合、入力には値がありません。これを試して...
if($('.input1').val())
あなたができること:
if($('.input1').length && $('.input1').val().length)
length
false
値が。の場合、条件でに評価されます0
。
あなたはこのようなことをすることができます:
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
したがって、getまたは""
orのいずれかを取得します。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");
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>
さらに読む:
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"});
}
私はこのようなことをします:$('input[value]').something
。これにより、値を持つすべての入力が検索され、それらに対して何かが操作されます。