tags:

views:

89

answers:

1

I have a select box

 <select id="myselectbox">
   <option value='a'>First option</option>
   <option value='b'>Second option</option>
 </select>

And jquery

 $('#myselectbox').change(function() {
    ...
 });

And a WatiN test

 SelectList list = Browser.SelectList(Find.ById("myselectbox"));
 list.Select("First option");

In IE, this changes the select box, but doesn't fire the jquery event handler. I am aware of the many issues surrounding the change() event handler in IE. So I have tried adding a number of things to the test to force the event to fire:

 list.Blur();
 list.Keypress('\r');
 list.Click();

I also tried to click outside the select box to remove the focus, hoping this would fire the event.

Any ideas?


Update: Resolution is to manually fire the change event with an eval:

Browser.Eval("$('#myselectbox').change();");
+2  A: 

You could manually fire the event:

$('#myselectbox').change();

The other JavaScript events you're firing don't change the value, so they won't fire the change event.

Matt Ball
Thank you! I ended up doing this from Watin: Browser.Eval("$('#myselectbox').change();") and that did the trick!
fredw