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();
}
}