2015-05-02 5 views
0

У меня есть функция, которую я хочу вызвать в любое время, когда пользователь нажимает клавишу в любом из нескольких полей.Лучший способ вызова функции jQuery из keyup на нескольких полях?

я могу достичь этого:

$("#a").keyup(function(){ 
    myfunction(); 
}); 
$("#b").keyup(function(){ 
    myfunction(); 
}); 
$("#c").keyup(function(){ 
    myfunction(); 
}); 
$("#d").keyup(function(){ 
    myfunction(); 
}); 

но есть что-то вроде

$("#a","#b","#c","#d").keyup(function(){ 
    myfunction(); 
}); 

Это было бы более элегантно?

(Кстати, я попытался выше, и он не работает)

JSFiddle

EDIT: Я принял ответ Дэвида ESCUDERO в ниже, так как он отвечает на вопрос, который я задал. Однако Erik Philips указывает, что было бы лучше предоставить все соответствующие поля классу, а затем вызвать событие на клавиатуре этого класса. Я вижу, что это правда.

ответ

1

Была ошибка на вашей скрипке, вы не ставили function на него.

myfunction(){ в function myfunction(){

Затем вы ставите двойные кавычки на каждый селекторе. $("#a","#b","#c","#d").keyup(function(){

Изменить что

$("#a,#b,#c,#d").keyup(function(){

Складывание:

function myfunction(){ 
 
    $("#result").append('<p>It worked!</p><br/>'); 
 
} 
 

 
$("#a,#b,#c,#d").keyup(function(){ 
 
\t myfunction(); 
 
}); \t
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" id="a" /> 
 
<input type="number" id="b" /> 
 
<input type="number" id="c" /> 
 
<input type="number" id="d" /> 
 

 
<div id="result"></div>

+0

Ах, отлично - спасибо за то, что вы уловили и отсутствие функции (это была просто глупая ошибка, переносящая ее в jsfiddle), но также и цитату strucutre. Я помечаю ваш как правильный ответ, поскольку он имеет самые подробные сведения, хотя у вас есть опечатка в разделе «Изменить это», где вы не удаляли кавычки. (Я могу сказать, что вы имеете в виду из примера). Исправьте это, и я приму ответ, когда наступит время - спасибо! – Gideon

+0

ОК, обновлено! спасибо, что поймали это! –

+0

вы также можете использовать селектор входов, если он предназначен для любых полей на странице '$ (": input ")' – scraaappy

0

Просто лечить ваш выбор JQuery как селектор CSS:

$("#a, #b, #c, #d").keyup(function(){ 
    myfunction(); 
}); 
2

Я не являюсь поклонником ни одного из этих решений (включая ваши примеры). Все они жестко соединены и уменьшают повторное использование. Кратко прочтите Decoupling Your HTML, CSS, and JavaScript.

Я очень рекомендую:

$(".js-myfunction").on('keyup', function(){ 
    myfunction(); 
}); 


<input type="text" value="Gideon" class="js-myfunction" /> 

Создать класс, который вы хотите применить ко всем элементам. Таким образом, вместо изменения вашего Javascript каждый раз, когда вам нужно добавить или удалить элемент, вы меняете свои html-элементы. Любой, кто читает ваш HTML, знает, какие элементы будут выполнять ваш метод (автоматически). И ваш Javascript не тесно связан с элементами HTML.

+0

Я вижу, что это мудрые слова, и я буду помнить их, когда я буду изучать javascript. Но пока писать класс для этого не зависит от моих возможностей/времени. – Gideon

+0

Я привел пример класса (он занял все 5 секунд), и javascript, который я написал, уже работает для него ... –

+0

О ... класс! Извините, у меня была голова PHP, и я думал о «классе» как о чем-то более сложном. Хорошо, я полностью понимаю, да, я вижу, что это лучше. Хорошо. Хорошо, спасибо, я это реализую. Но я буду принимать другой ответ, поскольку это технически ответ на то, что я спросил, в случае, если кто-то нуждается в этом по более веской причине, чем мое дело. Однако я отредактирую вопрос, чтобы выделить ваши комментарии (это разумный SO ettiquette?) – Gideon

Смежные вопросы