我有2 Form.Request在2個函數是在2個不同的按鈕執行單擊Mixedup Ajax響應
這裏是小提琴 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);
不是看着它在滿滿的,卻又好像你需要重用你的'Form.Request'情況下,這意味着,不要讓若已定義一個新的,相反,'instance.removeEvents()'和然後'instance.addEvents({新事件})' –
所以在onComplete我可以做instance.removeEvents()或之後? – Benn
是的,你可以。或者在你的clearCache方法中。 –