模糊后,如果输入为空,我想添加类.hass-error,之后我将一些文本写入输入,在创意类.hass-error必须删除并添加类has-success。 .has-error正在删除但是新的clas
function checkSignupData() {
var username = $('.signup-panel input[name="username"]');
username.on({
'focusin': function(){},
'focusout': function(){
if(!this.value.length) {
$(this).closest('.form-group').removeClass('has-success').toggleClass('has-error');
}
else if(this.value.length > 3 && this.value.length < 32) {
$(this).closest('.form-group').removeClass('has-error').toggleClass('has-success');
}
}
});
}
setInterval(checkSignupData(), 100);
答案 0 :(得分:0)
你不需要设置间隔,因为你正在使用事件,你最终会绑定大量的事件处理程序,这可能会导致你的问题
你也应该使用addClass,因为它更加自信
编辑:删除setInterval并一次调用checkSignupData
答案 1 :(得分:0)
function checkSignupData() {
var username = $('.signup-panel input[name="username"]');
if (username.text().length > 0) {
username.closest('.form-group').removeClass().addClass('has-success');
} else {
username.closest('.form-group').removeClass().addClass('has-error');
}
}
window.setInterval(function(){
checkSignupData();
}, 5000);
这不是使用setInterval
的理想解决方案,因为DOM会变得混乱并使您的应用程序变慢。例如,如果此username
位于表单中,则可以在提交表单时调用该检查。就像我说的那样,不是最理想的解决方案,而是我认为你想要实现的解决方案。
checkSignupData()
将每5秒调用一次。
我刚想到的另一个解决方案可能有用:
username.on('keyup', function() {
// call function
});
我原本以为这可能不起作用,因为如果input
中没有任何内容,它就不会触发。但是,按退格键删除文本也会触发事件。唯一的想法是,在启动时,你必须将元素初始化为has-error
类,因为它最初没有任何内容。