まず第一に、私はwebshims lib (ポリフィルの 1 つで、もうメンテナンスされていません) の作成者です。あなたの質問に答えるには:
プロジェクトのフォーム ポリフィルを作成する価値はありますか?
いいえ、1 つのプロジェクトだけでこれを行うのは非常に困難です。単純に、最新のテクノロジーを使用したいという理由だけで、そうしました。
プロジェクトで webshims lib のようなフォーム ポリフィルを使用する価値はありますか?
そのとおり!その理由は次のとおりです。
1. 標準化された優れた宣言型マークアップ API
Webshim を含めてスクリプトを作成した後、次のようにします。
//polyfill forms (constraint validation) and forms-ext (date, range etc.)
$.webshims.polyfill('forms forms-ext');
ウィジェットと制約をフォームに簡単に書き込むことができます。
<input type="date" />
<input type="date" min="2012-10-11" max="2111-01-01" />
<input type="range" disabled />
<input type="email" required placeholder="Yo you can use a placeholder" />
これにより、3 つの異なるウィジェットが作成され、それぞれが異なる構成になっています。追加の JS は必要ありません。標準化されたクリーンで無駄のないコードだけです。
2. 標準化された DOM-API
DOM API についても同様です。以下に 2 つの例を示します: 2 つの日付フィールドの結合と、範囲フィールドと日付フィールドの結合。
3. 最新のブラウザーでは JS なしで動作します
古いブラウザでは正常に機能しなくなり、最新のブラウザでは問題なく動作します。
4.最新のブラウザでのファイルサイズの縮小
特にモバイルに適しています (たとえば、iOS 5、Blackberry は日付をサポートしています)。
5. より良い UX [主にモバイル]
モバイル UX の向上 (タッチ操作の入力 UI の向上、パフォーマンスの向上、システムへの適合) (使用している場合): type="email"、type="number"、type="date"/type="range"
それでも、カスタマイズ性はどうですか?
私はより大きなエージェンシーの開発者であり、ほとんどのクライアントとあなたの意見は完全に一致しており、ほとんどのデザイナーは大きな違いを容認しませんが、それでも私は最新のテクノロジーを使用したいと考えています。
制約検証のカスタマイズ
ポリフィル部分
//polyfill constraint validation
$.webshims.polyfill('forms');
エラー バブルの UI をカスタマイズする:
//on DOM-ready
$(function(){
$('form').bind('firstinvalid', function(e){
//show the invalid alert for first invalid element
$.webshims.validityAlert.showFor( e.target );
//prevent browser from showing native validation message
return false;
});
});
次のマークアップを生成します。
<!-- the JS code above will generate the following custom styleable HTML markup for the validation alert -->
<span class="validity-alert-wrapper" role="alert">
<span class="validity-alert">
<span class="va-arrow"><span class="va-arrow-box"></span></span>
<span class="va-box">Error message of the current field</span>
</span>
</span>
無効/有効なフォーム フィールドのスタイルのカスタマイズ:
.form-ui-invalid {
border-color: red;
}
.form-ui-valid {
border-color: green;
}
有効性アラートのテキストのカスタマイズ:
<input required data-errormessage="Hey this is required!!!" />
そして今、ポイントは何ですか:
- JSなしでも動作します
- 最新のブラウザーはカスタマイズ コード (3kb 分/gzip 圧縮) のみをロードし、古いブラウザーは追加の API (約 13kb 分/gzip) をロードします (フォームには、制約検証 API 以外にも多くのものが含まれています。たとえば、オートフォーカス、プレースホルダー、出力もあります。等々)
そして、日付フィールドをカスタマイズするあなたの特別な例は何ですか?
問題ない:
//configure webshims to use customizable widget UI in all browsers
$.webshims.setOptions('forms-ext', {
replaceUI: true
});
$.webshims.polyfill('forms forms-ext');
そしてここにも:
- 最新のブラウザーでは JS がなくても動作します
- 最新のブラウザは UI と UI-API グルーのみをロードし、DOM-API (valueAsNumber、valueAsDate...) はロードしません。
そして今、ここに最高のものがあります:
//configure webshims to use customizable widget UI in all non mobile browsers, but a customizable one in all desktop and all non-capable mobile browsers
$.webshims.setOptions('forms-ext', {
//oh, I know this is bad browser sniffing :-(
replaceUI: !(/mobile|ipad|iphone|fennec|android/i.test(navigator.userAgent))
});
$.webshims.polyfill('forms forms-ext');
- ファイル サイズが小さくなり、モバイル ブラウザーの UX が向上します (ほとんどのクライアントとほとんどのデザイナーは、モバイルで異なる UI を使用できることを気に入るはずです!!!)
- 最新のブラウザーでは JS がなくても動作します
- 最新のブラウザは UI と UI-API グルーのみをロードし、DOM-API (valueAsNumber、valueAsDate...) はロードしません。