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 回答
0

attr你也可以使用removeAttr

// When input is focussed
$('#prospects_form > *').focus(function() {
 $(this).attr('class', 'hasText');
});
// blur event..
$('#prospects_form > *').blur(function() {
 if ($(this).val() == '') { 
   $(this).removeAttr('class', 'hasText'); 
 }
});

错误是,您在模糊事件中丢失()了。val哪个是错误,并且导致了错误,您也会在控制台中看到它。

这也是一个小提琴:) http://jsfiddle.net/afzaal_ahmad_zeeshan/kdd84/1/

祝你好运!

于 2013-10-17T15:25:14.710 回答