来自form属性的Javascript回调
Javascript callback from form attribute
我已经设置了一些自动表单提交代码。基本上,当表单提交时,javascript会处理它,查找所有输入等,并通过ajax将数据发送到表单的动作属性
$j('body').delegate('form', 'submit', function(e) {
e.preventDefault();
if($j(this).prop('data-callback', true))
asf.forms.processForm($j(this).attr('name'), $j(this).attr('data-callback'));
else
asf.forms.processForm($j(this).attr('name'));
});
但我需要包括回调。我需要使代码全局化,这样我就不能为每个表单编写任何细节。所以我想添加一个带有回调函数名称的属性,比如:
<form action="" method="" data-callback="posts.addPost()">
问题是我不知道如何在javascript中激发这个函数。有什么想法吗?我不能使用onsubmit,因为我需要访问所有表单信息,这意味着在ajax响应中进行回调。
感谢
我知道eval是邪恶的,但它似乎是唯一合理的解决方案:
eval($(form).attr('data-callback'));
如果只在data-callback
属性(例如data-callback="posts.addPost"
)中放入方法名称,则可以在没有eval:的情况下调用它
var methodName = $(form).attr('data-callback');
var parts = methodName.split('.');
var method = window;
$(parts).each(function(){
method = method[this];
});
method();
为了在不使用eval
的情况下实现这一点,我建议您将所有"表单回调"存储在一个对象中,如下所示:
var formCallbacks = {
'posts.addPost': function() {
// ...
},
// ...
};
使用data-callback
机制,您可以在响应处理程序中查找回调:
function(args, callbackName) {
formCallbacks[callbackName]();
// ...
}
相关文章:
- JavaScript回调函数
- 如何在javascript回调函数中返回多个变量
- Google Data API上的OOP Javascript回调方法
- JavaScript回调函数和Google Feed API
- 行上的Primefaces数据表选择javascript回调
- 使用jasmine测试JavaScript回调函数
- 当页面中的某些脚本已经执行时,javascript回调
- 性能惩罚JavaScript回调函数
- JavaScript回调问题
- 需要Javascript回调ajax解释
- 未通过单击按钮调用JavaScript回调
- Google+登录JavaScript回调问题
- 在对象内完成ajax调用后触发Javascript回调
- 独立线程上的Javascript回调函数
- 循环函数(Javascript回调帮助)
- 使用JavaScript回调函数了解变量作用域和闭包
- 带有参数的Javascript回调函数
- 带有数据库的Javascript回调
- Node.js/express,javascript回调函数未执行
- javascript回调如何知道它们的参数