我有一页有两种类型的表格。我在顶部有一个 A 型的形式,然后在它下面有一个或多个 B 型的形式。
我使用模块模式 + jQuery 来连接表单上的所有事件、处理验证、ajax 调用等。
这是定义单例(如表格 A)和可重用对象类(如表格 B)的首选/有效方式吗?它们非常相似,我不确定是否需要使用 objectprototype
属性new
、 或不同的模式。一切似乎对我有用,但我担心我错过了一些关键错误。
Form A
javascript看起来像这样:
var MyProject.FormA = (function() {
var $_userEntry;
var $_domElementId;
var validate = function() {
if($_userEntry == 0) {
alert('Cannot enter 0!');
}
}
var processUserInput = function() {
$_userEntry = jQuery('inputfield', $_domElementId).val();
validate();
}
return {
initialize: function(domElementId) {
$_domElementId = domElementId;
jQuery($_domElementId).click(function() {
processUserInput();
}
}
}
})();
jQuery(document).ready(function() {
MyProject.FormA.initialize('#form-a');
});
Form B
,它被初始化一次或多次,定义如下:
var MyProject.FormB = function() {
var $_userEntry;
var $_domElement;
var validate = function() {
if($_userEntry == 0) {
alert('Cannot enter 0!');
}
}
var processUserInput = function() {
$_userEntry = jQuery('inputfield', $_domElement).val();
validate();
}
return {
initialize: function(domElement) {
$_domElement = domElement;
jQuery($_domElement).click(function() {
processUserInput();
}
}
}
};
jQuery(document).ready(function() {
jQuery(".form-b").each(function() {
MyProject.FormB().initialize(this);
});
});