0

実際の html5 プレースホルダー機能は IE10 より前では利用できないことは理解していますが、実際のタグ プロパティは引き続き利用できますか?

独自のカスタム プレースホルダーを作成するには、次のスクリプトを使用します。

if(core.isInput(el)) {
    el.initValue = str;
    el.txtColor = core.dom.css(el, 'color');
    var set = function() {
        if(el.value == '') {
            el.value = el.initValue;
            el.style.color = '#BDBAB5';
        }
    };
    set(); //Set the placeholder

    core.dom.on(el, 'focus', function() {
        if(this.value == this.initValue) {
            this.value = '';
            this.style.color = this.txtColor;
        }
    });

    core.dom.on(el, 'blur', set);
} else {
    console.error('Element is not an input.');
}

要素にプレースホルダーを手動で設定するのではなく、次のようなことを行うことは可能ですか?

var inputs = document.getElementsByTagName('input');
for(var i=0; i<inputs.length; i++) {
    var input = inputs[i];
    if(input.getAttribute('placeholder') != undefined) {
        //Set placeholder code
    }
}

つまり、HTML でプレースホルダーを設定し、ブラウザーがそれらをサポートしていない場合、getAttribute を使用すると、入力でプロパティを引き続き使用できますか? input.getAttribute('placeholder') チェックを実行すると、最初に設定したプロパティが使用可能になりますか、それともサポートされていない場合、ブラウザーはプレースホルダー プロパティを自動的に削除しますか?

現在、入力ごとにプレースホルダー機能を手動で追加していますが、自動オンロード スクリプトを使用して作業を行いたいと考えています。プレースホルダー値を検出して、入力にプレースホルダーがあると判断できない場合は、機能しません。

4

1 に答える 1

1

主流の最新ブラウザ (IE、FF、Webkit など) はすべて「アドホック」属性を受け入れます1 - これは、歴史的な理由と互換性の両方の理由によるものと思われます。

getAttributeテキストの DOM 値のみを返す (はずである) ため、これは最新のブラウザーで一貫して機能し、値が削除または変更されることはありません。getAttribute(IEは過去に特別な属性を台無しにしました。)


1 警告: DOM 実装 (またはユーザー エージェント)が IDL で指定されていない属性を受け入れる必要があるかどうか、または拒否できるかどうかについて、 W3C DOM (またはW3C HTML勧告) で裏付けとなる証拠を見つけることができません。

于 2013-05-07T04:08:57.157 に答える