背景: jQuery検証スクリプトがあります。これはほとんどすべてのWebページで使用されており、クライアント側の検証が可能です(サーバー側の検証も行います)。javascriptは、各フォームの特定の「ルール」を除いて、すべてのページで同じです。
各ページのルールは、HTMLページをレンダリングする前に、コントローラーからphp変数$jquery_validationに挿入されます。これは、適切なクライアント側の検証ルールを使用して、各htmlページとフォームを動的に生成できることを意味します。
以下は、現在すべてのHTMLページにロードされているJavaScriptコードです。
$(document).ready(function(){
$('#signupform').validate({
wrapper: 'span class="error"',
meta: 'validate',
highlight: function(element, errorClass, validClass) {
if (element.type === 'radio') {
this.findByName(element.name).addClass(errorClass).removeClass(validClass);
} else {
$(element).addClass(errorClass).removeClass(validClass);
}
var error = $(element).parent().find('span.error');
error.show();
},
unhighlight: function(element, errorClass, validClass) {
if (element.type === 'radio') {
this.findByName(element.name).removeClass(errorClass).addClass(validClass);
} else {
$(element).removeClass(errorClass).addClass(validClass);
}
$(element).parent().find('span.error').hide(0, function() {
$(element).parent().find('span.valid').fadeIn(200);
});
},
<?=$jquery_validation?>);});
</script>
最後の$jquery_validation変数には、各ページの「ルール」が含まれています。これは、フォームによって明らかに異なります。それが与える出力の例は次のとおりです。
"rules":{"username":{"required":true,"remote":{"url":"http:\/\/localhost\/mytest\/public_html\/welcome\/remote","type":"post"}},"onkeyup":false});});
関数は現在機能しており、すべてが良好です。
質問:検証javascript関数を.jsファイルに含める方法はありますか(圧縮などが可能です)、それでも各ページの検証の「ルール」セクションを動的にロードしますか?
必要に応じて、$ jquery_validationの「出力」と構文を変更できますが、重要なのは、各ページのルールを動的に出力できる必要があるということです。