Abs
Abs

Reputation: 57916

How to find input element id by value?

How do I get the id of an input element based on its value? The values will always be unique and there are only seven of them. I have tried this:

$('#wrapper').find("input[value='"+value+"']").each(function(){
    return this.id;
});

But nothing is returned!

Upvotes: 4

Views: 28815

Answers (5)

DannyLane
DannyLane

Reputation: 2096

Try

$(this).id nope, this.id works, no need to create a jQuery object for the ID.

or

$(this).attr('id')

HTH

EDIT: This might work:

$('#wrapper').find("input[value='"+value+"']").attr('id');

Upvotes: 7

meo
meo

Reputation: 31249

your code is almost good:

$('#wrapper').find("input[value='"+value+"']").each(function(){
        return  $(this).attr("id") 
});

check here http://jsfiddle.net/5xsZt/

edit: i have just tested it with this.id it works to. Your code is right. Your error is somewhere else: check it: http://jsfiddle.net/5xsZt/3/

Upvotes: 3

nkrkv
nkrkv

Reputation: 7098

You write return this.id;… Return where? You simply return value from anonymous functions and I don't see where you ever trying to use it. So the answer is:

var idYouAreSearchingFor = $('#wrapper').find("input[value='"+value+"']").attr('id');

Upvotes: 4

Tim Down
Tim Down

Reputation: 324567

Here's a version that will definitely work in all mainstream browsers:

function getInputWithValue(wrapper, value) {
    var inputs = wrapper.getElementsByTagName("input");
    var i = inputs.length;
    while (i--) {
        if (inputs[i].value === value) {
            return inputs[i];
        }
    }
    return null;
}

var wrapper = document.getElementById("wrapper");
var input = getInputWithValue(wrapper, "some value");
window.alert(input.id);

Upvotes: 1

tdolsen
tdolsen

Reputation: 466

You can solve this using a filter. Like this:

$('#wrapper input').filter(function() {
    return $(this).val() == value;
}).each(function() {
    return this.id;
});

Upvotes: 1

Related Questions