2011-03-08 129 views
1

我有一個插件比較表單中的2個字段,並根據結果發出警報。 它工作正常,除了當我有多個表單。無論我在頁面上有多少表單,插件都會運行相同的次數。這是一個命名空間問題嗎?jQuery插件多次觸發

$(document).ready(function() { 
    (function($){ 
    $.fn.totalPressedQuantityCheck = function(){ 
     var form = $(this).parents('form'); 
     var total_pressed_field = form.find('input[id*="total_pressed"]'); 
     var variation_quantity_field = form.find('input[id*="quantity"]'); 

     var total_pressed_amount = parseInt(total_pressed_field.val()); 
     var variation_quantity_amount = parseInt(variation_quantity_field.val()); 

     if (!isNaN(total_pressed_amount) && !isNaN(variation_quantity_amount)){ 

     if (total_pressed_amount < variation_quantity_amount){ 
      alert("PROBLEM"); 
     } 
     } 
    } 
    })(jQuery); 

    $('input[id*="total_pressed"]').live('blur', function(){ 
    $(this).totalPressedQuantityCheck(); 
    }); 
    $('input[id*="quantity"]').live('blur', function(){ 
    $(this).totalPressedQuantityCheck(); 
    }); 

FIX的那些東西 一個...我的JS結束了在我的循環,並在HTML多次漸漸呈現。感謝jsfiddle網站。我能夠輕鬆地提取我的代碼並縮小問題範圍。我希望我以前知道這個網站!

+0

將父母('表格')更改爲最接近的('表格'),然後向我們發送此表格的html。發佈你的設置jsfiddle - jsfiddle.com – Jason 2011-03-08 03:50:06

+0

哇。 jsfiddle真是太棒了。這裏是我的js&html。 http://jsfiddle.net/kJAAF/1/ – brewster 2011-03-08 04:29:58

+0

我意識到代碼是如何糟糕的。我正在同時做晚餐。讓我重做:) – brewster 2011-03-08 04:47:26

回答

0

所以我的js結束了我的循環,並獲得了多次HTML呈現。杜爾。感謝jsfiddle網站。我能夠輕鬆地提取我的代碼並縮小問題範圍。我希望我以前知道這個網站!

0

我相信你的問題是,當你關聯的插件

$('input[id*="total_pressed"]').live('blur', function(){ 
    $(this).totalPressedQuantityCheck(); 
    }); 

這將讓任何輸入從兩種形式此功能。你所要做的就是使用更具體的選擇器。

+0

以及任何形式的任何輸入應該調用該插件。我不應該爲每個表單分別綁定?有時會有4或5種形式。 – brewster 2011-03-08 03:56:12

+0

不,我可能不會做單獨的綁定,但我會通過一個值告訴你什麼形式搶或組件應該抓住什麼樣的字段配對 – Avitus 2011-03-08 03:58:52