Так же, как будущая заметка для тех, кто сталкивается с этим вопросом, эти ответы правильны при поиске конкретного value
в качестве атрибута , то есть того, который жестко запрограммирован в HTML & mdash; полностью правильно в соответствии с заданным вопросом. Однако если значение поля изменяется пользователем в любой момент, значение атрибут не обновляется, только значение элемента свойство . Это приведет к неожиданному поведению в форме выбора элементов, которые на самом деле имеют разные текущие значения ... вместо & mdash; или, по крайней мере, пока я не найду лучший способ & mdash; Я использовал следующее:
jQuery.extend(
jQuery.expr[':'],
{
/// check that a field's value property has a particular value
'field-value': function (el, indx, args) {
var a, v = $(el).val();
if ( (a = args[3]) ) {
switch ( a.charAt(0) ) {
/// begins with
case '^':
return v.substring(0,a.length-1) == a.substring(1,a.length);
break;
/// ends with
case '$':
return v.substr(v.length-a.length-1,v.length) ==
a.substring(1,a.length);
break;
/// contains
case '*': return v.indexOf(a.substring(1,a.length)) != -1; break;
/// equals
case '=': return v == a.substring(1,a.length); break;
/// not equals
case '!': return v != a.substring(1,a.length); break;
/// equals
default: return v == a; break;
}
}
else {
return !!v;
}
}
}
);
Приведенное выше описание создает новый псевдо-селектор jQuery, который можно использовать следующим образом:
$('input:field-value(^test)');
, который выберет все входы, которые начинаются со значения «test», или:
$('input:field-value(*test)');
Который выберет все входные данные, содержащие "тест" в любом месте его значения.
Также поддерживаются !
не, $
заканчивается или =
равно ...