2012-01-26 91 views
2

HTML:JQUERY不斷綁定點擊功能

<div id='myform'> 
    Name : <input type='text'/> 
    Age : <input type='text'/> 
    ..... 
    <input type='button' class='mysavebutton' value='save'/> 
</div> 

HTML腳本:

$(document).ready(function(){ 
    $("#myform input:button").click(function(){ 
     //do save 
     alert("Save complete."); 
    }); 
}); 

的問題是: 如何添加功能#myform輸入:按鈕之前 「不救」沒有改變上面的任何代碼..(像添加插件)

我已經創建了這樣的東西

$(document).ready(function() { 
    $(".mysavebutton").each(function() { 
     $(this).data("old_click", $(this).click); // <----- here the problem #1. how to keep click function. 

     $(this).unbind("click").click(function() { 
      parent = $(this).parents("body"); 

      $(parent).find("input:textbox").each(function() { 
       validate_object(this); //this function validate all textbox on body and add error class to textbox if error 
      }); 

      if ($(parent).find("input:type.error").length == 0) { 
       //no error. than call old function 
       $(this).data("old_click"); //eval($(this).data("old_click")) 
      } 
      else { 
       //not run old_click coz error 
       alert("Invalid data.") 
      } 
     }); 
    }); 
}); 

如果可能,修理。如果沒有,請給其他解決方案。 thanx

回答

1
​​

可能是更好的方法,但這應該工作。

http://jsfiddle.net/GhLSS/1/

+0

$(本)。數據( 「old_click」)申請(這一點,參數);沒有錯誤,但沒有工作 – printf

+0

這工作。但在運行此功能之前需要綁定按鈕。 – printf

+0

查看更新回答 – Alex

1
$(".mysavebutton").each(function(){ 
    var self = $(this); 
    var old_click_handler = self.data('events')['click'][0].handler; 
    self.unbind("click").click(function() { 
     alert('pre save'); 
     old_click_handler(); 
    });  
}); 
+0

這個工作。太。但與上述相同。 thanx for .data('events')['click'] [0] .handler – printf