82

次の例があります。

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

この要素が存在し、1つのステートメントに値があるかどうかを確認する方法はありますか?または、少なくとも、それより短いもの

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

何マイルも続く条件でここでイライラしているだけです。

4

7 に答える 7

157

入力が存在しない場合、入力には値がありません。これを試して...

if($('.input1').val())
于 2013-03-18T16:14:33.090 に答える
35

あなたができること:

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

lengthfalse値が。の場合、条件でに評価されます0

于 2013-03-18T16:13:30.370 に答える
13

あなたはこのようなことをすることができます:

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

if ($(selector).existsWithValue()) {
        // Do something
}
于 2013-03-18T16:13:46.727 に答える
10

念のため、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と評価されます。

于 2013-03-18T16:37:22.743 に答える
3

独自のカスタムセレクター :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>

さらに読む

于 2018-04-01T21:19:00.757 に答える
0
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"});

}
于 2019-08-08T22:49:42.023 に答える
-1

私はこのようなことをします:$('input[value]').something。これにより、値を持つすべての入力が検索され、それらに対して何かが操作されます。

于 2016-12-26T18:05:33.253 に答える