2017-01-12 5 views
0

Как я могу объединить некоторые селекторы в jquery, чтобы отключить мою функцию, реагирующую на некоторые поля?Как совместить атрибуты селектора jQuery

Пример:

Мой автозаполнения ака. функция поиска вызывается, когда любое поле ввода получает значения, превышающие 3 знака.

Чтобы исключить некоторые материалы, которые я использую этот

$('#customerdata input[name!="c_ldate"]').bind('keyup',function(){... 

это прекрасно работает для одного поля. Нет. У меня есть второй вход, где моя функция не должна реагировать.

Я хочу сделать что-то подобное, как

$('#customerdata input[name!="c_ldate"], input[name!="c_ldate2"]')... 

но этого не работает.

Есть простой способ выбрать атрибут (имя) и сказать: «если значение бла-бла не использовать эту» короткую руку name!="bla bla OR foo bar"

Его трудно добавить скрипку ... мои фидель не работают на всех ... даже не тогда, когда я использую мой рабочий код ... проводной

Просто Сайед:

у меня есть 10 входов внутри DIV и я хочу, чтобы исключить два из них по имени!

EDIT

нашел свое решение.

$('#customerdata input').not('[name!="c_ldate"]').not('[name!="c_ldate_text"]') 
//or similar and bit shorter 
$('#customerdata input').not('[name!="c_ldate"],[name!="c_ldate_text"]') 
//shortest for me in my case 
$('#customerdata input').not('[name^="c_ldate"]') 
//what actually just checks if name attribte starts with... so this is fine for me as well 
+0

@ T.J.Crowder лучше? – Dwza

+0

Непонятно, чего вы хотите. Я предлагаю добавить ** runnable ** [mcve] к вопросу с помощью Stack Snippets, указывая поля, которые вы делаете, и не хотите обрабатывать, и как вы можете различать их. Я подозреваю, что [это] (http://api.jquery.com/attribute-not-equal-selector/) будет иметь значение. –

+0

(_As из jQuery 3.0, .bind() устарел. Он был заменен методом .on() для прикрепления обработчиков событий к документу с jQuery 1.7, поэтому его использование уже было обескуражено.) –

ответ

0

Добавить класс ко всем входам? Затем $ (". Class"). Bind ... Если я правильно понял ваш вопрос.

+0

Вы можете выбирать вещи с именами просто отлично, без необходимости в классах. –

0

Логически, оператор запятой между двумя селекторами CSS похож на логический ИЛИ, но ваши селекторы работают путем исключения. Например: if (x! = 3 || x! = 4). Но это выражение не исключает значения x. Я попытался это с JQuery в форме, мне довелось иметь под рукой:

$("body").append("<div id='foo'><input name='fred'><input name='george'><input name='harry'>"); 

Затем селекторы:

$("#foo input[name!=fred]"); 
[input, input] 
$("#foo input[name!=george]"); 
[input, input] 
$("#foo input[name!=george], #foo input[name!=fred]"); 
[input, input, input] 

Таким образом, выражение последний селектор не исключает какой-либо из трех входов.

+0

Но как вы можете видеть в моем посте, я использую это на всех входах внутри div. В моем случае #customrdata и я просто хочу исключить 2 ввода по имени – Dwza

+0

. Я установил свой пример, чтобы более точно соответствовать вашему вопросу. Это помогает? –