2014-10-27 3 views
1

Я хотел бы удалить класс "visuallyhidden" на этикетках заполненных текстовых полей. Поэтому, когда я начинаю вводить что-то в поле ввода, я хочу класс "visuallyhidden" очищен, чтобы надпись появилась над полем ввода. Однако, когда я стираю текст из этого поля ввода, я хочу, чтобы класс "visuallyhidden" был добавлен обратно на соответствующую метку.Удалить класс метки, когда соответствующее поле ввода заполнено

<label for="firstname" class="visuallyhidden">First Name</label> 
<input type="text" id="firstname" placeholder="First Name"/> 

<label for="lastname" class="visuallyhidden">Last Name</label> 
<input type="text" id="lastname" placeholder="Last Name"/> 

Моя неудачная попытка на JQuery, что несколько работ, но затрагивает все метки

$('input').keypress(function() { 
    $('label').addClass('visuallyhidden'); 
}); 
$('input').blur(function() { 
    if(!$(this).val()) { 
     $('label').removeClass('visuallyhidden'); 
    } 
}); 
+0

Я хочу мороженое. Однако это не сайт gimme the codez. Вы должны показать нам свою неудачную попытку, затем мы поможем вам исправить это. Вы вообще пытались написать какой-либо jQuery? См. Http://stackoverflow.com/help/how-to-ask – Sparky

+0

@Sparky Вы выбрали неправильный дубликат. Этот вопрос задает вопрос о том, как переключать класс на фокус и размытие, эти вопросы задают, как это сделать при наборе текста. Кроме того, он спрашивает, как добавить класс к самому входу, в то время как это спрашивает, как переключить класс рядом с меткой. Оба варианта разные. Плюс, ответы на это ужасны ... –

+0

@TJ. Поскольку в этом вопросе не показан код jQuery, я могу утверждать, что дубликат в целом показывает, как переключать класс на событие _any_ jQuery. Возможно, вы могли бы найти лучшего, чтобы использовать его как дубликат. – Sparky

ответ

1

Вы можете использовать JQuery toggleClass() метод следующим образом:

$(":input").on("keyup", function() { 
 
    $(this).prev("label").toggleClass("visuallyhidden", (this.value=="")) 
 
});
.visuallyhidden { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<label for="firstname" class="visuallyhidden">First Name</label> 
 
<input type="text" id="firstname" placeholder="First Name" /> 
 

 
<label for="lastname" class="visuallyhidden">Last Name</label> 
 
<input type="text" id="lastname" placeholder="Last Name" />

+0

Спасибо T J, это работает еще лучше! Я могу стереть все в поле ввода, и хотя он все еще находится в фокусе, ярлык исчезает. Это именно то, чего я пытался достичь. –

1

Чтобы настроить таргетинг на конкретные label, вам просто нужно traverse the DOM with jQuery methods ...

$('input').keypress(function() { 
    $(this).prev('label').addClass('visuallyhidden'); 
}); 
$('input').blur(function() { 
    if(!$(this).val()) { 
     $(this).prev('label').removeClass('visuallyhidden'); 
    } 
}); 

См : jQuery .prev()

$(this).prev('label') хватает ближайшего предыдущего брата $(this), который соответствует селектору 'label'.

+0

Большое спасибо за помощь! Все работает сейчас, как должно. –

+0

@SimonS., Пожалуйста. Пожалуйста, в будущем включите все соответствующие коды/информацию в OP, так как ваше изменение вносит все изменения здесь. – Sparky

Смежные вопросы