Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用mooTools提交表单,并将表单内联到submit event fire…帮助_Javascript_Events_Forms_Mootools_Submit - Fatal编程技术网

Javascript 使用mooTools提交表单,并将表单内联到submit event fire…帮助

Javascript 使用mooTools提交表单,并将表单内联到submit event fire…帮助,javascript,events,forms,mootools,submit,Javascript,Events,Forms,Mootools,Submit,我正在编写一个类,用一个自定义按钮替换文档中的所有input type=“button”和input type=“submit”,这实际上是一个填充在锚定标记中的跨度,我已经编写了所有内容,并且都可以正常工作,除了内联onsubmit事件之外,当表单使用javascript提交时,不会激发该事件 实际上,甚至写一个静态锚标记 <a href="javascript:void(0)" onclick="document.FORMNAME.submit();">Submit</a&

我正在编写一个类,用一个自定义按钮替换文档中的所有
input type=“button”
input type=“submit”
,这实际上是一个填充在锚定标记中的跨度,我已经编写了所有内容,并且都可以正常工作,除了内联
onsubmit
事件之外,当表单使用javascript提交时,不会激发该事件

实际上,甚至写一个静态锚标记

<a href="javascript:void(0)" onclick="document.FORMNAME.submit();">Submit</a>
有人有什么想法吗?这个类不需要配置,有一些旧站点使用我们的cms系统,我们希望将其插入其中,并且在表单上有很多内联提交事件需要说明

谢谢

更新

我接受了这个建议,并提出了以下建议:

if(this.getParent().onsubmit()) {
    this.getParent().submit();
}

非常适合在Submit事件上评估表单并根据其输出提交表单,但是如果函数根本不存在该怎么办?有什么想法吗?

在表单上触发
submit
不会触发它的内联
onSubmit
,这是默认的javascript行为(发现此:)

不过,您可以自己尝试调用submit上的
onsubmit
,这对我很有用:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.1/mootools-yui-compressed.js"></script>
        <script type="text/javascript" charset="utf-8">
            window.addEvent('domready', function(e) {
               $$('span.submit').each(function(el) {
                  el.addEvent('click', function(e) {
                    this.getParent().onsubmit();
                  });
               });
            });
        </script>
    </head>
    <body>
        <form method="post" onsubmit="alert('hi');" class="form">
            <input type="text" value="test" />
            <span class="submit">Submit the form</span>
        </form>
    </body>
</html>

window.addEvent('domready',函数(e){
$$('span.submit')。每个(函数(el){
el.addEvent('点击',功能(e){
this.getParent().onsubmit();
});
});
});
提交表格

您可能希望尝试此代码,因为它将检查onsubmit事件是否已作为事件侦听器而不是硬编码属性附加。如果事件作为侦听器附加,[form element].onsubmit()部分将不起作用

    function myOnSubmit(formId){
        var f = document.getElementById(formId);
        if(document.createEvent){
            var e = document.createEvent('Event');
            e.initEvent('submit',true,false);
            f.dispatchEvent(e);
        } elseif(document.createEventObject){
            var e = document.createEventObject('Event');
            e.button = 1;
            f.fireEvent('onsubmit',e);
        } elseif(typeof(f.onsubmit) == 'function'){
            f.onsubmit();
        }
    }

谢谢,这是可行的…但不是完全可行,评估
onsubmit()
…这很简单,但是如果根本没有
onsubmit()
,我怎么不评估它呢。你只需检查
onsubmit
属性是否已定义且不为空,如果为真,则将其作为方法调用。
    function myOnSubmit(formId){
        var f = document.getElementById(formId);
        if(document.createEvent){
            var e = document.createEvent('Event');
            e.initEvent('submit',true,false);
            f.dispatchEvent(e);
        } elseif(document.createEventObject){
            var e = document.createEventObject('Event');
            e.button = 1;
            f.fireEvent('onsubmit',e);
        } elseif(typeof(f.onsubmit) == 'function'){
            f.onsubmit();
        }
    }