Селектор jQuery для динамического входного значения

61
4

Как вы можете использовать :contain() в поле ввода, например


#inputfield содержит динамическое значение 5.938, и я хочу использовать $("#inputfield:contains('5.938')").


Но это не сработает, я предоставил демо в jsFiddle.


Я не хочу использовать if(element.val() == '5.938'), потому что мне нужен предварительный селектор вместо инструкции if/else.


Я также не имею в виду, используя [value=5.938], потому что значение изменится.

спросил(а) 2021-01-19T19:07:49+03:00 2 месяца, 3 недели назад
1
Решение
88

Из-за @Недальный ответ вам нужно использовать какой-то условный. Простой селектор не будет работать. .filter(), однако:


$('#inputfield').filter(function ()
{
return $(this).val() == '5.938';
});

Тем не менее, похоже, что вы используете селектор идентификаторов, который может выбирать не более одного элемента, поэтому .filter() - overkill — if...else действительно имеет наибольший смысл в этом случае.

ответил(а) 2021-01-19T19:07:49+03:00 2 месяца, 3 недели назад
86

Это должно работать:


$("#inputfield:text[value*='"+dynamicValue+"']").length

//will select text input #inputfield with a value containing dynamicValue.

jsfiddle: http://jsfiddle.net/XEP4c/3/

ответил(а) 2021-01-19T19:07:49+03:00 2 месяца, 3 недели назад
62

Ответы здесь кажутся запутанными, поскольку нет ясного объяснения. Когда вы устанавливаете значение динамически следующим образом:


$('#inputfield').val('5.938')

Не получается получить значение с помощью селекторов типа:


$('#inputfield[value="5.938"]')

Для этого существует несколько обходных решений. Один из них - использовать фильтр:


var inputfield = $('#inputfield').filter(function () {
return $(this).val() == '5.938';
});
if (inputfield.length) {
alert("The input field has the value 5.938");
}

Или вы можете создать свой собственный селектор:


(function($) {
$.extend($.expr[':'], {
val: function(el, i, attr) {
return $(el).val() === attr[3];
}
});
}(jQuery));
if ($('#inputfield:val("5.938")').length) {
alert("The input field has the value 5.938");
}

ответил(а) 2021-01-19T19:07:49+03:00 2 месяца, 3 недели назад
44

Ответ Manji проще, чем выбранный ответ, хотя и более простая форма. Я не мог заставить это работать для меня:


$("input[value='userID']").remove();

Конкатенация строки для вставки динамической переменной работает вместо этого:


$("input[value='" + userID + "']").remove();

Очевидно, замените .remove() тем, что вы хотите с ним сделать.

ответил(а) 2021-01-19T19:07:49+03:00 2 месяца, 3 недели назад
-4

Вы хотите использовать селектор атрибутов:


$('#inputfield[value='+dynamicValue+']')

ответил(а) 2021-01-19T19:07:49+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема