4 <title>Event Delegation Tests
</title>
6 var version
= location
.search
&& location
.search
.substr(1);
8 version
= "http://code.jquery.com/jquery-"+version
+".js";
10 version
= "../dist/jquery.js";
12 document
.write('<script src="'+version
+'"><'+'/script>');
16 border-collapse: collapse;
29 border:
1px solid #bbb;
34 <h2>Delegate Tests (
<span id=
"version">BAD FILE IN URL
</span>,
<span id=
"fileversion">x
</span>)
</h2>
44 <option value='one1'
>one1
</option>
45 <option value='one2'
>one2
</option>
46 <option value='one3'
>one3
</option>
49 <option value='two1'
>two1
</option>
50 <option value='two2'
selected=
"selected">two2
</option>
51 <option value='two3'
>two3
</option>
55 <select multiple=
"multiple">
56 <option value='multi1'
>multi1
</option>
57 <option value='multi2'
>multi2
</option>
58 <option value='multi3'
>multi3
</option>
62 <input type=
"checkbox" name=
"mycheckbox" id=
"check1"/>
63 <label for=
"check1">check1
</label><br/>
64 <input type=
"checkbox" name=
"mycheckbox" id=
"check2"/>
65 <label for=
"check2">check2
</label><br />
66 <input type=
"checkbox" name=
"mycheckbox" id=
"check3" disabled=
"disabled"/>
67 <label for=
"check3">check3
</label>
70 <input type=
"radio" name=
"myradio" id=
"radio1"/>
71 <label for=
"radio1">Radio1
</label><br/>
72 <input type=
"radio" name=
"myradio" id=
"radio2"/>
73 <label for=
"radio2">Radio2
</label><br />
74 <input type=
"radio" name=
"myradio" id=
"radio3" disabled=
"disabled"/>
75 <label for=
"radio3">Radio3
</label>
78 <input class=
"file_test" id=
"file1" type=
"file"/>
81 <input class='test' value='' id='input' size='
10'
/>
82 <input class='test' value='test' id='input2' size='
10'
readonly=
"readonly" />
85 <textarea rows='
2'
></textarea>
88 <button name=
"mybutton1" id=
"button1">Button
</button><br />
89 <button name=
"mybutton2" id=
"button2"><span>Button w/ child
</span></button><br />
90 <button name=
"mybutton3" id=
"button3" disabled=
"disabled">Button Disabled
</button><br />
91 <button name=
"mybutton4" id=
"button4" disabled=
"disabled"><span disabled=
"disabled">Button, child Disabled
</span></button><br />
98 <p>NOTE: Only IE supports propertychange, beforeactivate, beforedeactivate; buttons do not support change events.
</p>
100 <h2>Submit Tests
</h2>
107 <form action=
"" id=
"text_submit">
108 <input class='test' type='text' value='Key Return To Submit'
/>
112 <form action=
"" id=
"password_submit">
113 <input class='test' type='password' value=''
/>
117 <form action=
"" id=
"submit_submit">
118 <input type='submit'
value=
"Click Me To Submit" />
121 <td>$(document).bind('submit')
</td>
125 <td id='textSubmit'
class=
"red">TEXT
</td>
126 <td id='passwordSubmit'
class=
"red">PASSWORD
</td>
127 <td id='submitSubmit'
class=
"red">BUTTON
</td>
128 <td id='boundSubmit'
class=
"red">DOCUMENT
</td>
132 <form id=
"autosub"><input type=submit name=subme
/></form>
134 <script type='text/javascript'
>
136 $("#version").text(version
);
137 $("#fileversion").text($.fn
.jquery
);
139 // Try an auto-submit, it should only fire once
141 var triggered
= false;
142 $("#autosub input").trigger("keypress");
143 $("body").on("submit", "#autosub", function( e
){
147 alert("autosubmit FAIL");
151 $("#autosub").submit().remove();
154 // Events we want to track in row-order
155 var events
= "bind-change live-change on-change bind-propertychange live-beforeactivate live-focusin bind-focus live-beforedeactivate live-focusout bind-blur live-click live-keydown".split(" "),
157 blinker = function(event
){
159 $("#changes tbody td").text("");
161 var $el
= event
.data
,
163 prev
= prev
? prev
+" | " : "";
165 .text(prev
+ ++counter
+" " + (this.value
.replace(/^on$/,"") || this.id
|| this.checked
|| ""))
166 .css("backgroundColor","#0f0")
168 .queue(function(next
){
169 $el
.css("backgroundColor","#afa");
175 for ( var i
=0; i
< events
.length
; i
++ ) {
176 var m
= events
[i
].split("-"),
179 $row
= $("<tr><th>"+type
+" "+api
+"</th></tr>");
181 $("#changes thead td").each(function(){
182 var id
= "#"+this.id
,
183 $cell
= $('<td></td>');
185 $(this).find("input, button, select, textarea").each(function(){
186 this["on"+type
] = function(e
){ e
= $.event
.fix(e
||event
); e
.data
= $cell
; blinker
.call(this, e
); };
188 } else if ( api
== "bind" ) {
189 $(this).find("input, button, select, textarea").bind(type
, $cell
, blinker
);
191 $(id
+" input,"+id
+" button,"+id
+" select,"+id
+" textarea").live(type
, $cell
, blinker
);
195 $("#changes tbody").append($row
);
198 jQuery
.fn
.blink = function(){
200 .css("backgroundColor","green")
201 .text( (parseInt(this.text(), 10) || 0) + 1 )
202 .delay(700).queue(function(next
){
203 jQuery(this).css("backgroundColor","#afa");
208 jQuery
.fn
.addSubmitTest = function( id
, prevent
) {
209 return this.live("submit", function(e
){
217 $("#text_submit").addSubmitTest("#textSubmit", true);
218 $("#password_submit").addSubmitTest("#passwordSubmit", true);
219 $("#submit_submit").addSubmitTest("#submitSubmit", true);
220 $("#prog_submit").addSubmitTest("#submitSubmit", true);
221 $(document
).bind("submit", function(){
222 jQuery("#boundSubmit").blink();