С jQuery 1.4.2 и многими предыдущими версиями можно выбрать такие входы:
$('input[value=test]')
Но с 1.4.3 и выше этот селектор не работает = ( Есть ли способ выбрать по значению в новых версиях jQuery?
С jQuery 1.4.2 и многими предыдущими версиями можно выбрать такие входы:
$('input[value=test]')
Но с 1.4.3 и выше этот селектор не работает = ( Есть ли способ выбрать по значению в новых версиях jQuery?
Итак, решение состоит в том, чтобы добавить это к js:
$('input').bind('keyup change',function() {
$(this).attr('value',this.value)
});
Демо - http://jsfiddle.net/VwVhD/28/
ОБНОВЛЕНИЕ (21.02.2013)
Спустя годы я придумал это:
jQuery('input,textarea').live('keyup change', function(e) {
var ignore_codes = [16,9,33,34,36,35,45,38,40,37,39];//arrows and others
if (e.keyCode && jQuery.inArray(e.keyCode, ignore_codes) < 0)//ignore this keyUps to let this keys work as expected
{
var cp = getCP(this);
jQuery(this).attr('value', this.value);
setCP(this,cp);
}
});
function setCP(ctrl, pos){
if(ctrl.setSelectionRange) {
ctrl.focus();
ctrl.setSelectionRange(pos,pos);
} else if (ctrl.createTextRange) {
var range = ctrl.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
$('input[value="test"]')
Должен работать нормально...
ИЗМЕНИТЬ
Вы можете попробовать использовать инструкции if, например:
$("input").keyup(function(e) {
if (this.value == 'foo'){
$(this).css('backgroundColor','red');
}
else if (this.value == 'bar'){
$(this).css('backgroundColor','green');
}
else $(this).css('backgroundColor','white');
});
Насколько я могу судить, в новых версиях jQuery вы можете выбирать элементы INPUT по их атрибуту "значение", но не по текущему свойству .value.
Когда значение изменяется путем вызова .val(), изменения собственного значения JS. или также путем прямого ввода пользователем, атрибут HTML не изменяется. В предыдущих версиях селектора ссылались на текущее значение, а теперь они правильно ссылаются на атрибут HTML.
Вы можете выбрать текущее значение с помощью этого кода:
$('input').filter(function() { return this.value == 'test' });
В соответствии с документацией он должен работать просто отлично
http://api.jquery.com/attribute-equals-selector/
вам нужно использовать кавычки, чтобы окружить значение