0

我最近编写了一个带有JQuery Validation的表单。因为我placeholder在输入字段中使用了该方法,而 IE 并不完全支持这些方法,所以我使用了一个补丁来正确显示 IE 中的占位符。

一切正常,但是当您在 IE 中打开网站时,您会看到我打开页面时立即激活了 JQuery 验证,这显然不是重点。所以我认为这是某种错误。我查看了 .js 文件,但我的 JS 技能不太好,所以我想知道这个错误可能是什么......
有想法的人吗?

4

2 回答 2

2
<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>
于 2012-08-13T12:15:19.993 回答
1

我如何处理 IE?:

  • 使用条件注释加载ie.js和ie.css
  • 在这些文件中,您可以解决开发过程中可能出现的一些问题。

我的建议是,如果您使用的是 jQuery,您可以创建一个 jquery 插件并使用类名placeHolder();调用它:inputsplaceholder

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();
​

看看jsfiddle

于 2012-08-13T11:53:07.150 回答