Javascriptでrepeaterのinputにバリデーションをかける。

本家のjQueryのrepeaterのブランチでは、inputのtype=”number”でのバリデーションをサポートしていません。

自分でこのようなinputにバリデーションをかけるとしたら、以下のようにpattern属性を用いるといいかもしれません。

<input type="text" name="myrepeater" pattern="^([1-9][0-9]*|0)$">

このパターンに該当しない入力に対してはisInvalidイベントが発生します。

さらに、


$('input[id*="\\[myrepeater\\]"]').each(function(index, element){ element.oninvalid = function(event) { event.target.setCustomValidity('数字のみを入力してください。'); }; });

などしておくとメッセージも適切に表示されるかと思います。