0

この単純なjsを作成して、フォーカスのある入力にクラスを追加し、フォーカスを失ったときにそれを削除します(値が空の場合)。ただし、値が空かどうかに関係なく、クラスは削除されません。ご協力いただきありがとうございます。

HTML:

<form id="prospects_form" method="post" action="...">
    <input id="form_name" type="text" name="name" placeholder="Name*" />
    <input id="form_email" type="text" name="email" placeholder="Email*" />
    <input id="form_subject" type="text" name="subject" placeholder="Subject*" maxlength="50" />
    <textarea id="form_message" rows="6" cols="5" name="message" placeholder="Message*" maxlength="500"></textarea>

    <button id="form_send" class="btn btn_white" type="submit">Send</button>
</form>

JS:

// When input is focussed
$('#prospects_form > *').focus(function() {
    $(this).addClass("hasText");
});
$('#prospects_form > *').blur(function() {
    if ($(this).val === '') { $(this).removeClass("hasText"); }
});
4

3 に答える 3

1

valはメソッドです。これが、それを呼び出さなければならない理由です (括弧なしでは、関数への参照が返されます)。

フォーカスイベントさえ必要ありません!ぼかしハンドラを次のようにします。

$('#prospects_form > *').blur(function(e) {
    var $t = $(this);
    $t[($t.val() === '' ? 'removeClass':'addClass')]('hasText');
});
于 2013-10-17T15:20:29.800 に答える
0

答えてくれた@ Novocaine88と@ Anthony-Gristに感謝

$(this).val$(this).val()または_this.value

JS (更新)

// When input is focussed
$('#prospects_form > *').focus(function() {
    $(this).addClass("hasText");
});
$('#prospects_form > *').blur(function() {
    if (this.value === '') { $(this).removeClass("hasText"); }
});
于 2013-10-17T15:17:39.343 に答える