Skip to content

Commit 113e9d0

Browse files
committed
Autocomplete: Normalize falsy values, not just missing values
Fixes #9762
1 parent 2ef1b16 commit 113e9d0

5 files changed

+52
-25
lines changed

tests/unit/autocomplete/autocomplete_options.js

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,20 @@ function sourceTest( source, async ) {
220220
}),
221221
menu = element.autocomplete( "widget" );
222222
function result() {
223-
equal( menu.find( ".ui-menu-item" ).text(), "javajavascript" );
223+
var items = menu.find( ".ui-menu-item" );
224+
equal( items.length, 3, "Should find three results." );
225+
deepEqual( items.eq( 0 ).data( "ui-autocomplete-item" ), {
226+
label: "java",
227+
value: "java"
228+
});
229+
deepEqual( items.eq( 1 ).data( "ui-autocomplete-item" ), {
230+
label: "javascript",
231+
value: "javascript"
232+
});
233+
deepEqual( items.eq( 2 ).data( "ui-autocomplete-item" ), {
234+
label: "clojure",
235+
value: "clojure"
236+
});
224237
element.autocomplete( "destroy" );
225238
if ( async ) {
226239
start();
@@ -230,52 +243,58 @@ function sourceTest( source, async ) {
230243
stop();
231244
$( document ).one( "ajaxStop", result );
232245
}
233-
element.val( "ja" ).autocomplete( "search" );
246+
element.val( "j" ).autocomplete( "search" );
234247
if ( !async ) {
235248
result();
236249
}
237250
}
238251

239-
test( "source, local object array, only label property", function() {
240-
expect( 1 );
252+
test( "source, local object array, only labels", function() {
253+
expect( 4 );
241254
sourceTest([
242-
{ label: "java" },
243-
{ label: "php" },
244-
{ label: "coldfusion" },
245-
{ label: "javascript" }
255+
{ label: "java", value: null },
256+
{ label: "php", value: null },
257+
{ label: "coldfusion", value: "" },
258+
{ label: "javascript", value: "" },
259+
{ label: "clojure" }
246260
]);
247261
});
248262

249-
test( "source, local object array, only value property", function() {
250-
expect( 1 );
263+
test( "source, local object array, only values", function() {
264+
expect( 4 );
251265
sourceTest([
252-
{ value: "java" },
253-
{ value: "php" },
254-
{ value: "coldfusion" },
255-
{ value: "javascript" }
266+
{ value: "java", label: null },
267+
{ value: "php", label: null },
268+
{ value: "coldfusion", label: "" },
269+
{ value: "javascript", label: "" },
270+
{ value: "clojure" }
256271
]);
257272
});
258273

259274
test( "source, url string with remote json string array", function() {
260-
expect( 1 );
275+
expect( 4 );
261276
sourceTest( "remote_string_array.txt", true );
262277
});
263278

264279
test( "source, url string with remote json object array, only value properties", function() {
265-
expect( 1 );
280+
expect( 4 );
266281
sourceTest( "remote_object_array_values.txt", true );
267282
});
268283

269284
test( "source, url string with remote json object array, only label properties", function() {
270-
expect( 1 );
285+
expect( 4 );
271286
sourceTest( "remote_object_array_labels.txt", true );
272287
});
273288

274289
test( "source, custom", function() {
275-
expect( 2 );
290+
expect( 5 );
276291
sourceTest(function( request, response ) {
277-
equal( request.term, "ja" );
278-
response( ["java", "javascript"] );
292+
equal( request.term, "j" );
293+
response([
294+
"java",
295+
{ label: "javascript", value: null },
296+
{ value: "clojure", label: null }
297+
]);
279298
});
280299
});
281300

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
[{"label":"java"},{"label":"javascript"}]
1+
[
2+
{ "label": "java", "value": null },
3+
{ "label": "javascript", "value": "" },
4+
{ "label": "clojure" }
5+
]
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
[{"value":"java"},{"value":"javascript"}]
1+
[
2+
{ "value": "java", "label": null },
3+
{ "value": "javascript", "label": "" },
4+
{ "value": "clojure" }
5+
]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
["java", "javascript"]
1+
[ "java", "javascript", "clojure" ]

ui/jquery.ui.autocomplete.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -478,10 +478,10 @@ $.widget( "ui.autocomplete", {
478478
value: item
479479
};
480480
}
481-
return $.extend({
481+
return $.extend( {}, item, {
482482
label: item.label || item.value,
483483
value: item.value || item.label
484-
}, item );
484+
});
485485
});
486486
},
487487

0 commit comments

Comments
 (0)