Jquery: получить значение пользовательского атрибута
html5 поддерживает атрибут placeholder на элементах input[type=text]
, но мне нужно обрабатывать несовместимые браузеры. Я знаю, что есть тысячи плагинов для заполнителя, но я бы хотел создать 1001-й.
Я могу получить дескриптор элемента input[placeholder]
, но попытка получить значение атрибута placeholder возвращает undefined - $("input[placeholder]").attr("placeholder")
.
Я использую jquery 1.6.2.
Вот jsfiddle. Я изменил код для работы в браузере, совместимом с html5, только для целей тестирования.
html
<input type="text" name="email" size="10" placeholder="EMAIL ADDRESS">
JQuery
function SupportsInputPlaceholder() {
var i = document.createElement("input");
return "placeholder" in i;
}
$(document).ready(function(){
if(!SupportsInputPlaceholder()) {
//set initial value to placeholder attribute
$("input[placeholder]").val($("input[placeholder]").attr("placeholder"));
//create event handlers for focus and blur
$("input[placeholder]").focus(function() {
if($(this).val() == $(this).attr("placeholder")) {
$(this).val("");
}
}).blur(function() {
if($(this).val() == "") {
$(this).val($(this).attr("placeholder"));
}
});
}
});
Спасибо за любую помощь,
В
Ответы
Ответ 1
Здесь вам нужна какая-то форма итерации, так как val
(кроме того, когда вызывается с функцией) работает только с первым элементом:
$("input[placeholder]").val($("input[placeholder]").attr("placeholder"));
должен быть:
$("input[placeholder]").each( function () {
$(this).val( $(this).attr("placeholder") );
});
или
$("input[placeholder]").val(function() {
return $(this).attr("placeholder");
});
Ответ 2
Вы также можете сделать это, передав функцию с событием onclick
<a onlick="getColor(this);" color="red">
<script type="text/javascript">
function getColor(el)
{
color = $(el).attr('color');
alert(color);
}
</script>