我最近编写了一个带有JQuery Validation的表单。因为我placeholder
在输入字段中使用了该方法,而 IE 并不完全支持这些方法,所以我使用了一个补丁来正确显示 IE 中的占位符。
一切正常,但是当您在 IE 中打开网站时,您会看到我打开页面时立即激活了 JQuery 验证,这显然不是重点。所以我认为这是某种错误。我查看了 .js 文件,但我的 JS 技能不太好,所以我想知道这个错误可能是什么......
有想法的人吗?
我最近编写了一个带有JQuery Validation的表单。因为我placeholder
在输入字段中使用了该方法,而 IE 并不完全支持这些方法,所以我使用了一个补丁来正确显示 IE 中的占位符。
一切正常,但是当您在 IE 中打开网站时,您会看到我打开页面时立即激活了 JQuery 验证,这显然不是重点。所以我认为这是某种错误。我查看了 .js 文件,但我的 JS 技能不太好,所以我想知道这个错误可能是什么......
有想法的人吗?
<input type="text" placeholder="abc"/>
jQuery:
$( function() {
$('[placeholder]').on({
focus: function() {
if( $(this).val() == $(this).attr('placeholder') ) {
$(this).val('');
}
},
blur: function(){
if( !$(this).val() ) {
$(this).val( $(this).attr('placeholder') );
}
}
} ).each( function() {
$(this).val( $(this).attr('placeholder') ) ;
} );
});
要运行它:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"> </script>
<script type="text/javascript">
//script from above;
</script>
</head>
<body>
<input type="text" placeholder="abc"/>
</body>
</html>
我如何处理 IE?:
我的建议是,如果您使用的是 jQuery,您可以创建一个 jquery 插件并使用类名placeHolder();
调用它:inputs
placeholder
jQuery.fn.placeHolder=function(){
return this.each(function(){
var a=$(this).attr("value");
$(this).focus(function(){
if($(this).attr("value")==a){
$(this).attr("value","");
}}
);
$(this).blur(function(){
if($(this).attr("value")==""){
$(this).attr("value",a);
}
});
});
};
$('input.placeholder').placeHolder();