2013-12-10 49 views
0

我有一段代碼段需要修改,以便按鈕只能單擊一次。點擊一次後不可點擊按鈕

我已經嘗試了各種方法,並沒有設法成功到目前爲止。我相信我需要使用JavaScript,但這不是我的強項,我有點失落。

任何幫助將感激地收到。

代碼片段:

$the_button = '<input type="hidden" name="cart_quantity" value="1"/>' . zen_draw_hidden_field('products_id', (int)$_GET['products_id']) . zen_image_submit('add_to_cart3.jpg', BUTTON_IN_CART_ALT) . '<span id="button_cart" style="padding-left:6px;"></span>'; 
+0

您首先需要顯示按鈕所在的代碼。在我以前的答案(我刪除)我已經把代碼輸入類型按鈕或提交。是否注意到這是一個inpyt隱藏類型。所以告訴我們你的代碼在哪裏。如果你有一個提交按鈕@KLVTZ答案應該可以工作,但是你需要在你的頁面上包含jquery。 –

回答

1

你將不得不使用一些JavaScript這樣的辣椒是:

$params = 'onclick="var me=this;setTimeout(function(){me.disabled=true;},1);"'; 
zen_image_submit('add_to_cart3.jpg', BUTTON_IN_CART_ALT, $params); 

zen_image_submit()第三個參數允許添加額外的代碼參數。

或者,您可以使用第四個功能參數添加一個類:

zen_image_submit('add_to_cart3.jpg', BUTTON_IN_CART_ALT, '', 'disable-after-click'); 

之後,你定義一個單擊處理基於它的類名,如:

var buttons = document.getElementsByClassName('disable-after-click'), 
clickHandler = function() { 
    var me = this; 

    setTimeout(function() { 
     me.disabled = true; 
    }, 1); 
}; 

for (var i = 0; i < buttons.length; ++i) { 
    buttons[i].onclick = clickHandler; 
} 

另外,您可以用jQuery來完成上述操作。

+0

試過這個:zen_image_submit('add_to_cart3.jpg',BUTTON_IN_CART_ALT,'onclick =「this.disabled = true;」'); 但按鈕根本不可點擊。我會嘗試你的第二個解決方案 –

+0

@StevePrice哦,對...我的壞:)你應該使用'setTimeout()':) –

+0

這對我來說非常合適。謝謝傑克。()函數(){me.disabled = true;},1);「'; zen_image_submit('add_to_cart3.jpg',BUTTON_IN_CART_ALT,$ params); –

0

您需要應用JavaScript作爲一種規則,你的按鈕呈現在頁面上。 具體來說,您需要在點擊添加禁用的屬性,同時防止違約的單擊事件:使用jQuery通過JS Bin

$(function(){ 
    var button = $("input[type=submit]"); 
    button.on('click', function(e){ 
     button.attr("disabled", "disabled"); 
     e.preventDefault(); 
    }); 
}) 

我已經證明了實現這個的快捷方式。

+0

這不是JavaScript。 –

+0

我已經表明通過jQuery實現。如果你願意,我也會添加一個純Javascript實現。我對這種混亂表示抱歉。 – KLVTZ

+0

@Jack這是JavaScript,但使用JQuery。現在人們不再學習純粹和簡單的JavaScript了,有人認爲JQuery和Javascript是兩個不同的東西。 –