0

最近、 JQuery Validationを含むフォームをコーディングしました。私は自分の入力フィールドでメソッドを使用し、IE はこれらを完全にサポートしていないため、IE でプレースホルダーを適切に表示するためのパッチを使用します。placeholder

それはすべて機能しますが、IE で Web サイトを開くと、ページを開くとすぐに JQuery Validation がアクティブになっていることがわかりますが、これは明らかに重要ではありません。だから私はこれがある種のバグだと思っています。私は .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 に答える