Как выбрать элемент ввода по значению с помощью javascript?
Я видел эквивалент jquery:
$('input[value="something"]');
Но как вы выбираете его, используя чистый javascript (без jQuery).
Спасибо за все ответы до сих пор, но я уверен, что если он работает правильно, мне нужно изменить значение ввода во что-то другое. Я хотя бы мог сделать это
<enter snippet to select element here>.value = "someOtherValue";
Но, похоже, это не так просто. Любые идеи.
Ответы
Ответ 1
с ie6-ie7-ie8
function getInputsByValue(value)
{
var allInputs = document.getElementsByTagName("input");
var results = [];
for(var x=0;x<allInputs.length;x++)
if(allInputs[x].value == value)
results.push(allInputs[x]);
return results;
}
с современными браузерами ie9 + (? не уверен для ie9 на самом деле):
document.querySelectorAll("input[value=something]");
Ответ 2
Вы можете использовать document.querySelectorAll()
в современных браузерах (https://developer.mozilla.org/En/DOM/Document.querySelectorAll), например
var byValue = document.querySelectorAll('input[value="something"]');
Для старых браузеров вам придется перебирать по input
и проверять значение, например.
var inputs = document.getElementsByTagName("input"),
i,
len,
byVal = [],
value = "something";
for (i = 0, len = inputs.length; i < len; i++) {
if (inputs[i].value === value) {
byVal.push(inputs[i]);
}
}
Ответ 3
var elems = [].filter.call( document.getElementsByTagName("input"), function( input ) {
return input.value === "something";
});
http://jsfiddle.net/ts2Rr/3/
Ответ 4
Что-то вроде этого работает:
function getCheckboxByValue(v) {
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
if(inputs[i].type == "checkbox" && inputs[i].value == v) {
return inputs[i];
}
}
return false;
}
(function testCheckbox() {
getCheckboxByValue("1").checked = true;
})();
Использование jQuery было бы намного лучше.
Ответ 5
Что-то вроде этого должно работать...
for(i in document.getElementsByTagName('input')) {
if(i.value == 'desiredValue') {
return i;
}
}
Изменить: это вернет массив всех совпадений
var matches = [];
for(i in document.getElementsByTagName('input')) {
if(i.value == 'desiredValue') {
matches.push(i);
}
}