2017-02-07 4 views
2

カスタムテンプレートでカスタム入力要素を作成し、他のネイティブ入力要素と同じようにネイティブHTML <form>を尊重したいと考えています。たとえば、要素が無効で、ユーザーがフォームを送信しようとすると、ブラウザはカスタム要素の検証ロジックをトリガーし、送信を防ぎエラーを表示します。また、フォームが送信またはシリアル化されると、カスタム要素の値も含まれます。HTMLフォームでカスタムHtmlInputElementを検証する方法

"is"属性とHtmlInputElementオブジェクトを拡張するカスタムクラスを使用していますが、このメソッドを使用してカスタムテンプレートを使用することはできません。

これが可能なら、どうすればいいですか?

単純なJavaScriptとPolymerを使用した例が歓迎されています。

+1

おそらくそれはhttp://stackoverflow.com/a/40173805/4600982 – Supersharp

+2

と同じ質問です。理解しなければならない1つの制限は、現在のv1バージョンのカスタム要素がブラウザ間で実装されていることです(従来のバージョンv0ではなく)。は、カスタム要素クラスが 'HTMLElement'だけを拡張できるということです。したがって、 '' customElements.define'(https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define)に 'HtmlInputElement'を拡張したクラスを渡すと失敗します。 – sideshowbarker

+1

polyfillを使用しない限り@sideshowbarkerはい。 – Supersharp

答えて

2

1つの制限事項:現在のv1バージョンのカスタム要素は、(旧バージョンのv0バージョンではなく、複数のブラウザ間で実装されているわけではなく)複数のブラウザにわたって実装されています。カスタム要素クラスは、 HTMLElement

したがって、customElements.defineを入力すると、HtmlInputElementに拡張されるクラスは失敗します。

(上記のコメントで述べたように、あなたはポリフィルを使用しない限り、言ったすべてのこと。)

しかしinputを拡張して何かをすることについて具体的な質問へのより良い答えを、Custom input element in native formで答えを参照してください

関連する問題