我正在编写一个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/

10-12 04:06
查看更多