47

私のサイト用に単純なプレースホルダー jQuery プラグインを作成しようとしていますが、もちろん、ネイティブのプレースホルダー属性がサポートされていない場合にのみ関数を起動したいと考えています…</p>

jQuery を使用してプレースホルダー属性のネイティブ サポートをテストするにはどうすればよいですか?

4

4 に答える 4

93

$.support作成したJavascriptの先頭にこれを挿入することで、非常に簡単に追加できます。

jQuery.support.placeholder = (function(){
    var i = document.createElement('input');
    return 'placeholder' in i;
})();

$.support.placeholderその後、コード内のいずれかまたはjQuery.support.placeholderどこでも使用できます。

注意:このコードは、上記のhellvinzによって提供されたリンクであるdiveintohtml5から採用されました。

于 2010-10-14T21:56:12.507 に答える
15

http://www.modernizr.com/にある Modernizr ライブラリを使用します。

そして、これを行います:

if (Modernizr.input.placeholder) {
  // your placeholder text should already be visible!
} else {
  // no placeholder support :(
  // fall back to a scripted solution
}

Modernizr は、ほぼすべての HTML5 機能に対するブラウザーのサポートをテストするのに非常に便利です。

于 2010-10-14T21:45:43.373 に答える
4

こういうシンプルな授業が好き…

var Browser = {
  Can: {
    Placeholder: function () {
      return 'placeholder' in document.createElement('input'); 
    }
  }
}

...ブラウザがプレースホルダー属性をサポートしているかどうかを簡単に確認できます。

if (Browser.Can.Placeholder()) {

}
于 2014-07-23T12:33:39.270 に答える
3

このplaceholderプロパティは、プレースホルダー属性がHTML INPUT要素で定義されているかどうかに関係なく、すべてのブラウザーのINPUTDOMオブジェクトに存在します。

正しい方法は次のとおりです。

var Modernizr = {};
// Create the input element for various Web Forms feature tests.
var inputElem = document.createElement('input'), attrs = {};    
Modernizr.input = (function(props) {
    for(var i = 0, len = props.length; i < len; i++) {
        attrs[props[i]] = props[i] in inputElem;
    }
    return attrs;
})('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));

if(!Modernizr.input.placeholder) {
    // Do something.
}
于 2011-11-15T20:35:25.587 に答える