2013-11-25 24 views
0

我有我用下面的函數頁面上有多個形式:查找內容形式的特定部分已經改變輸入

$('#pageContainer').on('input propertychange change', '#form1', function() {}

在這個函數中,我做11函數調用格式化文本11種不同textarea框。我不需要全部打電話11,只是那些已經改變了需要格式化的電話。

有沒有一種方法可以找出表單的哪部分已被改變,使得函數調用,以便我可以調用正確的(1的11)函數,或根本沒有?

所以基本上,如果textarea 1-11是調用.on()的輸入,請調用該特定函數。如果不是,不要打電話。

回答

3

您可以使用event.target找出哪些因素引起的變化事件。

$('#pageContainer').on('input propertychange change', '#form1', function(e) { 
     var elementId = e.target.id; 
     //Do you actions based on this 
    } 
+0

這真是棒極了!謝謝! – bryan

0

我不認爲有一個很好的方便的函數來檢查這些事情,但你可以在onChange事件上分配一個事件處理程序,這可以將$(this).attr("id")添加到數組中。那麼你可以根據該數組構造一個選擇器?

例如

var changes = []; 
$("input").on('change', function() { 
    changes.push($(this).attr(id)); 
}); 

function yourFormattingFunction() { 
    var selector = "#" + changes.splice(", #"); 
    $(selector).each(function() { 
     //...Do your formatting here 
    }); 
} 

明顯的改進,比如確保該列表是唯一等可以做,以改善這個...

+0

已經有一個變化事件的事件處理程序,但你是如何使用正確的'this' – musefan