2015-05-14 38 views
0

我跟踪输入的变化是这样的:如何使用变更功能输入类型的有效

$(document).ready(function() { 
    $('input').change(function() { 
     alert("Key pressed"); 
    }); 
    $('textarea').change(function() { 
     alert("Key pressed"); 
    }); 
    $('input:radio').change(function() { 
     alert("Key pressed"); 
    }); 
    $('input:checkbox').change(function() { 
     alert("Key pressed"); 
    }); 
}); 

是否有可能重新因子上面的代码,这样我就不需要单独调用每个元素?

+1

。改变又不必为电台写或复选框。它将采取所有输入类型的控制。 – captainsac

+0

为这些不同的输入类型添加相同的类。并使用该类在jquery中进行事件。 例如('change',。'common_class'',function(){ alert(“Key pressed”); }); –

+1

@captainsac我猜你的意思是'$(':input')'而不是 –

回答

2

使用multiselectors重构你的代码:input它如果您正在使用$(“输入”)选择所有投入要素

$(':input').on('change', function() { 
    alert("Key pressed"); 
}); 
+0

什么是':input'? – Tushar

+0

@Tushar - ':input'它是选择所有输入元素: –

+0

https://api.jquery.com/input-selector/ –

3

要捕获的所有输入keypress事件不必提:checkbox:radio,因为它们都包含在input

$('input, textarea').on('change', function() { 
    alert("Key pressed"); 
}); 

你甚至可以使用keypress/keyup/​​事件,而不是change

选择所有指定选择器的组合结果。您可以指定任意数量的选择器组合成单个结果。这个多表达式组合器是一种选择不同元素的有效方法。返回的jQuery对象中的DOM元素的顺序可能不完全相同,因为它们将按文档顺序排列。 .add()方法是该组合器的替代方案。

文档:https://api.jquery.com/multiple-selector/

4

jQuery使用下面的相同的规则CSS的灒选择器引擎。考虑到这一点,您可以使用,分隔选择器。试试这个:

$('input, textarea').change(function() { 
    alert("Key pressed"); 
}); 

或者,您可以将通用类应用于所有这些元素,然后选择它。

请注意,无论如何,您选择input元素时,您的:radio:checkbox选择器是多余的。另外请注意,change事件不会触发,直到元素值更改它失去焦点。如果您想在按键发生时实际触发事件,请根据您的具体要求使用keypress或​​。