2017-05-04 31 views
-2

我有幾個輸入,我想用.on("change")來處理更改事件。我已經把輸入在一個變量數組這樣的:如何獲取已更改輸入的屬性?

$(document).on("change keyup", [ 
    input1, 
    input2, 
    input3 
], function() { 
    // doing stuff 
}); 

每個變量都有分配給它的這樣的jQuery選擇:

var input1 = $("input[name=input1]"); 
var input2 = $("input[name=input2]"); 
var input3 = $("input[name=input3]"); 

每個輸入具有欲數據屬性當輸入改變時從this上下文獲得。例如,如果輸入1已經改變,我想它的數據屬性的方式如下:

this.data("someAttribute") 

但我怕this不選擇從.on()功能,但與最初的$(document)選擇和我工作實際上是試圖從document中獲取數據屬性,而不是改變的輸入,這不是我所需要的。

注意:隨着我想要做的,選擇多個輸入像這樣$(input1, input2, input3)不適用於我的情況。

+2

第二個屬性必須是一個字符串選擇,不一個對象數組:http://api.jquery.com/on/我建議在所有'輸入'元素上放置一個普通的類,並通過它來代替'name'屬性來選擇 –

+0

什麼是標記投入看起來像? –

回答

1

而不是將需要綁定到數組中的輸入和將數組傳遞給.on()方法(這是不允許的),您應該將input元素置於一個常見的CSS類中,然後編寫事件綁定像這樣:

$(document).on("change keyup", ".theClass", function() { 
    // doing stuff 
}); 

然後,事件處理程序中,你需要通過this像這樣的jQuery函數:$(this).data()因爲.data()是一個jQuery方法,將無法使用本機的DOM元素上僅指this

下面是一個例子:

$(document).on("change keyup", ".input", function() { 
 
    console.log($(this).data("test")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' name='input1' class="input" data-test='one'> 
 
<input type='text' name='input2' class="input" data-test='two'> 
 
<input type='text' name='input3' class="input" data-test='three'>

+0

這適用於我!謝謝! ;) – Eseth

0

給所有輸入的CSS類

$('.change').on('change keyup', function() { 
 
     console.log($(this).val()); 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="change"> 
 
<input type="text" class="change"> 
 
<input type="text" class="change">