我在 2 个函数中有 2 个 Form.Request,这些函数在 2 个不同的按钮单击时执行
这是小提琴 http://jsfiddle.net/RtxXe/38/
似乎我没有在我的函数中按正确的顺序设置事件,因为它们混淆了响应。如果您点击清除缓存而不是发送,您仍然会从清除缓存中获得响应,反之亦然。除非您重新加载页面并再次单击,否则您无法获得每个按钮应有的正确响应。
由于这不是我的原始表单并且 *我只能使用 js * 更改它,我添加了带有新元素的清除缓存按钮。我不知道为什么会发生这种情况,感谢您的帮助。
这是原始的html:
<div id="toolbar">
<ul>
<li id="adminsubmit"><a href="javascript:;">Send</a></li>
</ul>
</div>
<div id="response"></div>
<form action="http://www.scoobydoo.com/cgi-bin/scoobysnack" method="post" name="editform" id="myform">
<fieldset>
<!-- form elements go here -->
</fieldset>
<input type="hidden" name="task" value="">
</form>
这里是js:
var AdminForm = {
start: function() {
var toolbar = $$('#toolbar ul');
var addbtn2 = new Element('li', {
'id': 'cache',
'class': 'button',
html: '<a href="javascript:;">Clear Cache</a>'
});
addbtn2.inject(toolbar[0], 'top');
var btn1 = $('adminsubmit').getElement('a');
var btn2 = $('cache').getElement('a');
btn1.addEvent('click', function(event) {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
AdminForm.formChange();
});
btn2.addEvent('click', function(event) {
event.preventDefault ? event.preventDefault() : event.returnValue = false;
AdminForm.clearCache();
});
},
formChange: function() {
var adminform = $('myform');
var target = $('response');
var adminsend = new Form.Request(adminform, target, {
onSend: function() {
target.set('html', 'formChange sending');
},
onComplete: function() {
target.set('html', 'formChange sent');
}
});
adminsend.send();
},
clearCache: function() {
var adminform = $('myform');
var target = $('response');
var clearingcahe = new Form.Request(adminform, target, {
onSend: function() {
target.set('html', 'clearCache sending');
},
onComplete: function() {
target.set('html', 'clearCache sent');
}
});
clearingcahe.send();
}
}
window.addEvent('domready', AdminForm.start);