2010-09-30 73 views
1

我想使用兩個按鈕的形式,並創建了以下工作。然而,它打破了頁面上的其他事件,但我無法弄清楚爲什麼。有沒有更好的辦法?兩個按鈕提交休息頁上的其他事件(mootools)

 window.addEvent('domready', function() { 
     $('vote1').addEvent('click',function() { 
      new Element('input', { 
        'type': 'hidden', 
        'name': 'winner', 
        'id': 'vote1id', 
        'value': 'vote1' 
       }).inject($('voterform')); 
      $('vote_wrapper').setStyle('display','none'); 
     }); 

     $('vote2').addEvent('click',function() { 
      new Element('input', { 
        'type': 'hidden', 
        'name': 'winner', 
        'id': 'vote2id', 
        'value': 'vote2' 
       }).inject($('voterform')); 
      $('vote_wrapper').setStyle('display','none'); 
     }); 

     $('voterform').addEvent('submit', function(e) { 
      e.stop(); 
      var log = $('v_wrapper').empty().addClass('loader'); 
      this.set('send', {onComplete: function(response) { 
       log.removeClass('loader'); 
       $('v_wrapper').set('html', response).set("tween", {duration: 2500}).setOpacity(0).fade(1); 
      }}); 
      this.send(); 
     }); 
    }); 
+0

什麼其他事件突破?很奇怪 - 我沒有看到你的代碼有什麼問題。你可以做的一件事就是保存自己支持兩套處理程序,按照原樣保留vote1代碼,在vote2上設置點擊處理程序來執行1document.id(「vote1」)。fireEvent(「click」);'。否則,發佈更多的問題,請 – 2010-09-30 16:23:39

+0

我想我應該說的要求。任何類型的html請求都不會通過ajax返回,而是會跳到一個新頁面並顯示結果。 – JJohn 2010-09-30 16:32:34

+0

我明白了。因此您可能會遇到以下兩種情況之一:導致您的回調函數無法運行的未捕獲的異常,因此默認的瀏覽器行爲發生(我通過jslint運行上面的代碼,因此無論它是什麼,它都不是語法或不在此代碼塊中)。和兩個:未正確處理事件/冒泡再次無法停止默認操作。 __你說你可以刪除兩個單擊事件處理程序,它使你的表單能夠通過XHR工作嗎?__你引用'$('v_wrapper')'和$('vote_wrapper')' - 這是故意的嗎? – 2010-10-01 08:40:57

回答

0

在上面的代碼,如果$(「vote1」)或$(「vote2」)是你將要修改代碼如下,以阻止默認行爲的發生鏈接或表單按鈕:

$('vote1').addEvent('click',function(e) { 
     e.stop(); 
     new Element('input', { 
       'type': 'hidden', 
       'name': 'winner', 
       'id': 'vote1id', 
       'value': 'vote1' 
      }).inject($('voterform')); 
     $('vote_wrapper').setStyle('display','none'); 
    }); 

    $('vote2').addEvent('click',function(e) { 
     e.stop(); 
     new Element('input', { 
       'type': 'hidden', 
       'name': 'winner', 
       'id': 'vote2id', 
       'value': 'vote2' 
      }).inject($('voterform')); 
     $('vote_wrapper').setStyle('display','none'); 
    }); 
+0

您是否有此代碼的鏈接?如果是的話,這將有助於隔離問題。 – 2011-09-15 20:39:34