Я работаю над проверкой формы (ввода поля).
Проблема. IE-браузеры (8-9) рассматривают текст заполнитель как значение, и во время проверки он принимает одно и то же значение, однако его следует рассматривать как пустое значение. Я не хочу использовать какой-либо скрипт и добиваться его, я придумал функцию ниже. Может ли кто-нибудь улучшить юзабилити/область действия немного больше. В настоящее время он вводит пустое поле ввода каждый раз, когда пользователь вводит значение. Тем не менее, я хочу, чтобы он был проверен в первый раз, когда текст по умолчанию для заполнителя вводится в действие. Любое предложение?
HTML
<input type="text" name="memberid" id="memberid" placeholder="Some Value" />
<a href="#" class="alpha-btn" id="search-btn">Search</a>
JQuery
$('#search-btn').on('click', function(){
if($.browser.msie){
$('input').each(function() {
var theAttribute = $(this).attr('placeholder');
if (theAttribute) {
$(this).val('');
alert('Please enter value - IE');
}
});
}
});
placeholder
создает проблему в < IE 9
поэтому вы можете использовать данные() как
HTML
<input type="text" name="memberid" id="memberid" data-placeholder="Some Value" placeholder="Some Value"/>
SCRIPT
$('#search-btn').on('click', function(){
if($.browser.msie){
$('input').each(function() {
var theAttribute = $(this).data('placeholder');
if (theAttribute == this.value) {// check placeholder and value
$(this).val('');
alert('Please enter value - IE');
}
});
}
});
fails
и она valid too
Я думаю, что лучший способ добиться того, что вы хотите сделать, - это создать полное решение для заполнителей в IE8 и IE9. Для этого я предлагаю использовать Modernizr с обнаружением функции ввода-записи. Таким образом, вы можете использовать такую функцию:
window.ie8ie9placeholders = function() {
if (!Modernizr.input.placeholder) {
return $("input").each(function(index, element) {
if ($(element).val() === "" && $(element).attr("placeholder") !== "") {
$(element).val($(element).attr("placeholder"));
$(element).focus(function() {
if ($(element).val() === $(element).attr("placeholder")) {
return $(element).val("");
}
});
return $(element).blur(function() {
if ($(element).val() === "") {
return $(element).val($(element).attr("placeholder"));
}
});
}
});
}
};
Это позволит заполнить поля для IE8 и IE9. Все, что вам нужно сделать, это использовать его при инициализации кода.
ie8ie9placeholders();