2017-05-26 417 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