我已经编写了这个简单的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"); }
});
答案 0 :(得分:1)
val
是一个方法,这就是你必须调用它的原因(没有括号,将返回对该函数的引用)
甚至不需要焦点事件!将模糊处理程序转为:
$('#prospects_form > *').blur(function(e) {
var $t = $(this);
$t[($t.val() === '' ? 'removeClass':'addClass')]('hasText');
});
答案 1 :(得分: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"); }
});
答案 2 :(得分: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
前面的{{1}}。哪个是错误,并且导致错误,你也会在控制台中看到它。
这也是一个小提琴:) http://jsfiddle.net/afzaal_ahmad_zeeshan/kdd84/1/
祝你好运!