私は現在 Twitter Bootstrap モーダル コンポーネントを使用していますが、data-remote 属性を使用してリモートで読み込むコンテンツの入力フィールドで jquery 検証プラグインを使用するという問題があります。
jquery 検証が dom 全体で実行された後にコンテンツが読み込まれるため、新しく読み込まれた要素の検証は行われません。
bootstrap.js (モーダル クラス) を変更するソリューションがあります。以下を参照してください。
var Modal = function (element, options) {
this.options = options
this.$element = $(element)
.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
//this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
this.options.remote && this.$element.find('.modal-body').load(this.options.remote, $.proxy(function () {
this.$element.trigger('loaded')
}, this)) //my additions
}
外部の HTML フラグメントをロードする呼び出しに対して「ロード済み」イベントをトリガーします。
私はすでにこのイベントを配線しており、新しくロードされた要素の検証を呼び出します。
$('#myModal').on('loaded', function () {
$.validator.unobtrusive.parse($(this));
});
私の問題は、これを達成するためにbootstrap.jsを変更しなければならなかったことです.bootstrap.jsを変更せずに外部でこれを機能させる方法はありますか? ページのモーダル オブジェクトにアクセスして、「loaded」イベントをアタッチする方法はありますか? 外部スクリプトまたはページ内でこれを行いたいので、ブートストラップのバージョンについて心配する必要はありません。