最初のプロパティが、親オブジェクトがアクセスする子オブジェクトを決定する関数であるオブジェクトを作成したいと思います。私の特定のアプリケーションは、送信されるフォームの種類に応じて、使用されるフォーム検証の種類を変更しています。
ページの読み込み時に表示されるエラー メッセージは次のとおりです。Uncaught TypeError: Cannot set property 'validate' of undefined
これまでの私のJavascriptは次のとおりです(JSfiddleは次のとおりです: http://jsfiddle.net/WJRwv/3/ ):
var O={
form:{
voting:{
validate: {}, success: {}
},
delete:{
validate: {}, success: {}
}
}
};
O.form=function(formType){
if(formType=='voting'){
return O.form.voting;
}
else if(formType=='delete'){
return O.form.delete;
}
}
直下の行がエラーの原因です
O.form.voting.validate=function($form){ //**THIS LINE IS CAUSING THE ERROR**
if($form.validate().form()){ // this is a method from the jQuery validate plugin
console.log('YES validates');
}
else {
console.log('NOT valid'); return false;
}
}
$('input[type=submit]').click(function(){
var formType=$(this).data('form-type'),
$form=$(this).closest('form'),
formType=O.form(formType);
console.log('form type is:'+formType);
formType($form); //this should call the O.form.voting.validate method
});
HTML:
<form>
<input type="submit" data-form-type='voting' name='voting' value="1">
</form>
<form>
<input type="submit" data-form-type='delete' name='delete' value="1">
</form>