limit number of selections in multiple select

How can I limit the number of selections in multiple select? Say, a
user should not be able to select more than 5 values in a multiple
selection box. I am following the multiple select example here:
http://www.gilluminate.com/2007/02/15/best-way-to-do-multiple-select-combo-boxes-in-rails/
. Thanks.

I don’t think you can with Rails (well, you could do it with validation on the model) but it’s easy enough with jQuery.

Assuming you have a text box like this:

	<select name="Test" id="Test" multiple size="1">

		<option value="option1">option1</option>

		<option value="option2">option2</option>

		<option value="option3">option3</option>

		<option value="option4">option4</option>

		<option value="option5">option5</option>

		<option value="option6">option6</option>

		<option value="option7">option7</option>

	</select>

You can do this:

	<script type='text/javascript'>

	if ($('#Test').val().length > 5)

	     ('#submit').hide();

	}

	</script>

Or take whatever action you want, but basically $(sel).val() returns an array for multiple select boxes.

Cheers,

Andy

(well, you could do it with validation on the model)

Isn't that where it would be best?

You can do this:
<script type='text/javascript'>
if ($('#Test').val().length > 5)
('#submit').hide();
}
</script>

but of course, we all know that relying solely on JS for validation is
a sure method for letting duff data get into your DB (because not
every browser has JS enabled or supported)

By all means, use the JS to enhance the front end; but if you have to
ensure there's no more than a certain amount of associations, you
*have* to check that in the model.
You could also check the params array coming into the controller, and
see what the size is there (unfortunately, I don't have time right
this second to try it out, but if you haven't sorted it yourself
later, re-post for help and I'll have a play)

(well, you could do it with validation on the model)

Isn’t that where it would be best?

I agree.

You can do this:

but of course, we all know that relying solely on JS for validation is

a sure method for letting duff data get into your DB (because not

every browser has JS enabled or supported)

By all means, use the JS to enhance the front end; but if you have to

ensure there’s no more than a certain amount of associations, you

have to check that in the model.

You could also check the params array coming into the controller, and

see what the size is there (unfortunately, I don’t have time right

this second to try it out, but if you haven’t sorted it yourself

later, re-post for help and I’ll have a play)

Completely agree with this.

Cheers,

Andy

Thank you all so much. Validation at the model level is an excellent
idea. I should have thought about that. I am still getting into the
habit of thinking the rails way.