2017-05-26 41 views
0

我有一個簡單的表單,在刀片模板中有一個「提交」按鈕和一個額外的「添加」按鈕。在表單提交中,有一個ajax回調函數用於驗證提供的值。根據控制器返回的結果,我想更改「添加」按鈕onClick事件。這裏是刀片剪斷:Laravel中的AJAX更新按鈕onClick url

<button id="theId" type="button" >Add</button> 

相關阿賈克斯PICE:

$.ajax({ 
     ... 
     success: function(result){ 
      //Update onClick for the add button 
      addButton.onclick=function() { 
       //location.href = 'www.example.com'; 
       window.location="www.example.com"; 
      }; 
      addButton.html("aNewName"); 
     } 
} 

基於所有源或者location.href或window.location的要我重定向到一個不同的頁面(在我的情況只是一個不同子頁面)但它沒有。經過幾個小時的研究,我認爲我得到了一個錯誤的按鈕或某事與ajax本身是錯誤的,但後來我添加了addButton.html行,這很好。我在這裏做錯了什麼?

+0

嘗試'點擊()'的jQuery的功能:https://stackoverflow.com/questions/12627443/jquery-click-vs-onclick – JazZ

+0

如何設置'addButton'? – thanksd

回答

2

獲取按鈕,刪除最終以前的單擊事件,添加使用HTTP/HTTPS前綴的新事件,更改按鈕的文字

success: function(result){ 
    var button = document.querySelector('#theId'); 
    button.addEventListener('click', function() { 
     window.location = 'https://www.google.it'; 
    }); 
    button.innerHTML = "my new button text"; 
} 
+0

我得到了:「未捕獲TypeError:addButton.removeEventListener不是一個函數」 – orim

+0

對不起,我仍然指着你的舊代碼,該變量應該是「按鈕」我已經更新了代碼 – quirimmo

+0

我應該作爲第二個參數傳遞給removeEventListener?一個空的函數? – orim

0

它看起來像你試圖設置一個jQuery對象的onclick屬性的功能,這是不正確的方式來設置jQuery中的點擊事件處理程序。

您應該使用jQuery對象的click方法來設置點擊處理程序。並使用off方法來刪除以前的處理程序:

addButton.off('click'); 
addButton.click(function() { 
    window.location="https://www.example.com"; 
}) 

Here's a working fiddle.

+0

奇怪的是,這不適合我。我點擊「添加」按鈕並沒有任何反應 – orim

+0

示例小提琴沒有重定向它在控制檯中記錄字符串的頁面以顯示處理程序已更改 – thanksd

+0

但我更新了我的代碼並且它不工作;/ – orim