我想创建一个对象,其第一个属性是一个函数,用于确定父对象访问哪个子对象。我的具体应用是根据提交的表单类型来改变表单验证的类型。将函数分配给JSON属性
错误消息我得到在页面加载我是: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;
}
}
THE LINE正下方导致错误
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>
- @ prodigitalson ,谢谢我意识到,但是我在哪里定义'o.form',以便我可以切换使用'o.form.voting'或'o.form.delete'的位置? –
这取决于你希望它的功能,比如你希望以后公开和重写什么,除非你实际编辑代码,你想要“保护”什么? – prodigitalson