我正在编写一个javascript对象,该对象包含一个返回标准格式html的方法。在这个对象中,我还有一个validate()方法。
我想要生成的表单使用validate();
因此,带有验证的表单的典型html可能看起来像这样:
<form id="a" onSubmit="return validate();">
问题是我需要能够引用对象实例,所以
它需要更像
onSubmit="my_object.validate();">
我尝试过类似的东西
return '<form id="a" onSubmit="return ' + this.validate + '();">';
但是我的行为很奇怪。
如果我使validate函数任意返回true,则提交表单,否则返回false。如果我在方法中执行任何其他计算,则会收到此错误:
> Error: syntax error Source Code:
> return id ==
有没有人经历过这样的事情?
最佳答案
您可以输出HTML,获取对form对象的引用,然后以编程方式附加事件处理程序,而不是在HTML属性中输出事件处理程序,如下所示:
<html>
<head>
<script type="text/javascript">
var my_object = {
outputForm: function(container) {
container.innerHTML =
'<form id="a"><input type="submit" value="Validate" /></form>';
this.createdForm = document.getElementById('a');
this.createdForm.onsubmit = this.validate;
},
validate: function() {
// use this.createdForm to get at the controls.
alert("Who dares awake my slumber?");
}
};
function createTheForm() {
my_object.outputForm(document.getElementById('container'));
}
</script>
</head>
<body onload="createTheForm()">
<div id="container"></div>
</body>
</html>
关于javascript - 在javascript中以字符串形式返回函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1113198/