views:

133

answers:

3

Hello

<input value="1" />
<input value="10" />
<input value="9" />
<input value="4" />
<input value="5" />

I'd like to be able to do that kind of selection:

$('input[value between 6 and 11]');

Which would give me the 9 and 10. Is there a way to do that ?

+8  A: 

You can do this with .filter() like this:

$("input").filter(function() { 
  return $(this).val() >= 6 && $(this).val() <= 11; 
}).somethingHere();

If you need to use this often, you could make it a selector as well:

jQuery.expr[':'].between = function(a, b, c) { 
   var args = c[3].split(',');
   var val = parseInt(jQuery(a).val());
   return val >= parseInt(args[0]) && val <= parseInt(args[1]);
};

Then you can select by:

$("input:between(6, 11)")

Just change the >= and <= if you don't want the range to be inclusive.

Nick Craver
Thank you, this can be very usefull
Glide
+3  A: 

You could use the filter function:

$('input').filter(function(index) {
    var value = parseInt($(this).val());
    return !isNaN(value) && value > 6 && value < 11;
});
Darin Dimitrov
Thank you very much, I didn't know how to use filter()
Glide
+2  A: 

you could use .filter()

$("input").filter(function(){
   var v = parseInt($(this).val());
   return (v > 9 && v < 11)
});

Kind Regards

--Andy

jAndy
Thank you very much, I didn't know how to use filter()
Glide