在javascript中将函数作为字符串返回

0 javascript function this

我正在编写一个javascript对象,其中包含一个返回标准表单的html的方法.在这个对象中我还有一个方法validate(); 我希望生成的表单使用validate();

因此,具有验证的表单的典型html可能如下所示:

<form id="a" onSubmit="return validate();">
Run Code Online (Sandbox Code Playgroud)

问题是我需要能够引用对象实例,因此它需要更像 onSubmit="my_object.validate();">

我尝试了类似的东西, return '<form id="a" onSubmit="return ' + this.validate + '();">'; 但我的行为非常奇怪.

如果我使validate函数任意返回true表单被提交,false则不然.如果我在方法中进行任何其他计算,我会收到此错误:

> Error: syntax error Source Code:
>     return id ==
Run Code Online (Sandbox Code Playgroud)

有没有人经历过这样的事情?

Jac*_*cob 5

您可以输出HTML,获取对表单对象的引用,然后以编程方式附加事件处理程序,而不是在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>
Run Code Online (Sandbox Code Playgroud)