From 9035dfcb9381abe6ed0f41ca324e633b23bf0a0b Mon Sep 17 00:00:00 2001 From: Igor Vaynberg Date: Sun, 10 Feb 2013 15:16:38 -0800 Subject: [PATCH] equal and indexof need to support comparing items of differnet types, ie string vs number. this is needed because numeric ids stored in val() are strings and need to be compared against data ids which are numbers. fixes #840 --- select2.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/select2.js b/select2.js index 68c0db71..2754ae1a 100644 --- a/select2.js +++ b/select2.js @@ -103,7 +103,9 @@ the specific language governing permissions and limitations under the Apache Lic function indexOf(value, array) { var i = 0, l = array.length; - for (; i < l; i = i + 1) if (value === array[i]) return i; + for (; i < l; i = i + 1) { + if (equal(value, array[i])) return i; + } return -1; } @@ -113,7 +115,12 @@ the specific language governing permissions and limitations under the Apache Lic * @param b */ function equal(a, b) { - return a===b; + if (a === b) return true; + if (a === undefined || b === undefined) return false; + if (a === null || b === null) return false; + if (a.constructor === String) return a === b+''; + if (b.constructor === String) return b === a+''; + return false; } /**