Подтвердить что ты не робот

Как выбрать элемент ввода по значению с помощью javascript?

Я видел эквивалент jquery:

$('input[value="something"]');

Но как вы выбираете его, используя чистый javascript (без jQuery).

Спасибо за все ответы до сих пор, но я уверен, что если он работает правильно, мне нужно изменить значение ввода во что-то другое. Я хотя бы мог сделать это

<enter snippet to select element here>.value = "someOtherValue";

Но, похоже, это не так просто. Любые идеи.

4b9b3361

Ответ 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);
   }
}