88

重複の可能性:
HTML5 タイプの検出とプラグインの初期化

<input type=date>

(オプションの) ユーザー エージェントが提供する datepicker を使用して入力を作成する必要がありますが、まだ広くサポートされていないため、jQuery UI Datepicker を使用しています。ブラウザーに独自の日付ピッカーを使用させ、ブラウザーにそのような機能がない場合にのみ jQuery UI にフォールバックさせるにはどうすればよいでしょうか?

現時点では、日付ピッカーが組み込まれているのは Opera だけだと思いますが、Opera のテストは明らかに悪いでしょう。この機能を検出できる方法はありますか (ポータブルな方法で検出できる場合)?

4

1 に答える 1

144

次のメソッドは、一部の入力タイプがほとんどのブラウザでサポートされているかどうかを確認します。

function checkInput(type) {
    var input = document.createElement("input");
    input.setAttribute("type", type);
    return input.type == type;
}

ただし、コメントでsimonoxが言及しているように、一部のブラウザー(Androidストックブラウザーとして)は、あるタイプ(日付として)をサポートしているように見せかけますが、日付入力用のUIを提供していません。そのため、simonoxは、日付フィールドに不正な値を設定するというトリックを使用して実装を改善しました。ブラウザがこの入力をサニタイズすると、日付ピッカーも提供される可能性があります!!!

function checkDateInput() {
    var input = document.createElement('input');
    input.setAttribute('type','date');

    var notADateValue = 'not-a-date';
    input.setAttribute('value', notADateValue); 

    return (input.value !== notADateValue);
}
于 2012-04-17T21:17:33.667 に答える