How to scroll OPTION into view?

  • Thread starter Rithish Saralaya
  • Start date
R

Rithish Saralaya

Is there a way to scroll a selected OPTION into view?

I have a combination of text box and SELECT list. A user can key in
text in the text box, and depending on the entry made, the respective
option in the list is to be highlighted. Somewhat like an
autocolmplete... I have been able to achieve this, however, if the
position/index of the selected option is beyond the SIZE of the SELECT
list, then the OPTION positions itself at the bottom of the list.

Is there a way to scroll the selected OPTION into view? I would not
want to interchange the indexes of the OPTIONs, but merely scroll the
OPTION to be viewed at the top within the list area.

The target browser is IE 5.0+. Hence, a MS compliant solution will
also do.

Advice and suggestions solicited.

Regards,
Rithish.
 
R

RobG

Rithish Saralaya wrote:
[...]
Is there a way to scroll the selected OPTION into view? I would not
want to interchange the indexes of the OPTIONs, but merely scroll the
OPTION to be viewed at the top within the list area.
[...]

As far as I can tell, no. In a single select list, the selected item
is always made visible, but in a multi-select list (I'm guessing that
is what you are using) it does not scroll if the selected item is
out-of-view (i.e. off the bottom of the visible area).

Even if you set an out-of-view option as selected in the HTML, it
remains out of view, even though it's selected. I guess the idea is
that if more than one is selected and the browser can't show both
simultaneously, then which one does it show?

C'est la vie

Rob.
 
R

Rithish Saralaya

RobG said:
As far as I can tell, no.
Actually speaking, this has been achieved too. However, I wasn't
confident of the solution. I do a 2-step selection. I select another
OPTION some indices below, and then select the actual OPTION. If I
have a SELECT list of 100 options of size 10, and the 50th OPTION is
to be selected, then, I first select the OPTION of index 60 ( required
OPTION index + list size ), and then select the OPTION of index 50.
This brings the 50th OPTION as the first item in the visible area.
But, as I said, I wasn't too confident of the solution. I wanted to
know if there were some methods like scrollToTop or something that
could be applied....


In a single select list, the selected item
is always made visible, but in a multi-select list (I'm guessing that
is what you are using) it does not scroll if the selected item is
out-of-view (i.e. off the bottom of the visible area).
It is indeed a single select list..
 
R

RobG

Rithish said:
Actually speaking, this has been achieved too. However, I wasn't
confident of the solution. I do a 2-step selection. I select another
OPTION some indices below, and then select the actual OPTION. If I
have a SELECT list of 100 options of size 10, and the 50th OPTION is
to be selected, then, I first select the OPTION of index 60 ( required
OPTION index + list size ), and then select the OPTION of index 50.
This brings the 50th OPTION as the first item in the visible area.
But, as I said, I wasn't too confident of the solution. I wanted to
know if there were some methods like scrollToTop or something that
could be applied....


In a single select list, the selected item


It is indeed a single select list..

I'd been mulling this over for a while, and finally got to test it.
I've run the following code in every browser I can, yet the right
option is always made visible when the button is clicked.

What browser are you having issues with? I've tested it in IE and it
works fine.

Cheers, Rob.

<form action="">
<select name="aSelect">
<option value="opt1">option 1
<option value="opt2">option 2
<option value="opt3">option 3
<option value="opt4">option 4
<option value="opt5">option 5
<option value="opt6">option 6
<option value="opt7">option 7
<option value="opt8">option 8
<option value="opt9">option 9
<option value="opt10">option 10
<option value="opt11">option 11
<option value="opt12">option 12
<option value="opt13">option 13
<option value="opt14">option 14
<option value="opt15">option 15
<option value="opt16">option 16
<option value="opt17">option 17
<option value="opt18">option 18
<option value="opt19">option 19
<option value="opt20">option 20
<option value="opt21">option 21
<option value="opt22">option 22
<option value="opt23">option 23
<option value="opt24">option 24
<option value="opt25">option 25
</select><br>
<input type="reset"><br><br>
<input type="text" cols="10" name="aNum">
Enter a number from 1 to 25 and that option will be selected<br>
<input type="button" value="click me" onclick="
var x = this.form.aNum.value;
if (x > 0 && x < 26) {
this.form.aSelect.options[x - 1].selected='true'
} else {
alert('From 1 to 25 please, ' + x + ' is out of bounds');
}
">
</form>
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top