From 44b44e82884c6f2475f2b728cada1df9de9db7b0 Mon Sep 17 00:00:00 2001 From: Hans-Peter Buniat Date: Sun, 18 Sep 2011 17:53:03 +0200 Subject: [PATCH 1/5] try/catch the regexp, fixes 2416 --- js/jquery.mobile.listview.filter.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) mode change 100644 => 100755 js/jquery.mobile.listview.filter.js diff --git a/js/jquery.mobile.listview.filter.js b/js/jquery.mobile.listview.filter.js old mode 100644 new mode 100755 index ebbcc2bdad4..b85048f3e36 --- a/js/jquery.mobile.listview.filter.js +++ b/js/jquery.mobile.listview.filter.js @@ -40,12 +40,16 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() { lastval = $this.jqmData( "lastval" ) + "", childItems = false, itemtext = "", - item, change; + item, change, + regex = ""; + + try { + regex = new RegExp( "^" + lastval ); + } catch (e) {} // Change val as lastval for next execution $this.jqmData( "lastval" , val ); - - change = val.replace( new RegExp( "^" + lastval ) , "" ); + change = val.replace( regex , "" ); if ( val.length < lastval.length || change.length != ( val.length - lastval.length ) ) { From ba933696cee81aab4141ecf9679c8077fc56fdb6 Mon Sep 17 00:00:00 2001 From: Hans-Peter Buniat Date: Mon, 19 Sep 2011 07:12:36 +0200 Subject: [PATCH 2/5] second attempt to fix #2416 --- js/jquery.mobile.listview.filter.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/js/jquery.mobile.listview.filter.js b/js/jquery.mobile.listview.filter.js index b85048f3e36..2d89f5f95b1 100755 --- a/js/jquery.mobile.listview.filter.js +++ b/js/jquery.mobile.listview.filter.js @@ -40,16 +40,11 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() { lastval = $this.jqmData( "lastval" ) + "", childItems = false, itemtext = "", - item, change, - regex = ""; - - try { - regex = new RegExp( "^" + lastval ); - } catch (e) {} + item, change; // Change val as lastval for next execution $this.jqmData( "lastval" , val ); - change = val.replace( regex , "" ); + change = val.substr( 0 , lastval.length + 1 ).replace( lastval , "" ); if ( val.length < lastval.length || change.length != ( val.length - lastval.length ) ) { From f7ec1a021156b1c3a8ecb15a271137278d689c68 Mon Sep 17 00:00:00 2001 From: Hans-Peter Buniat Date: Tue, 20 Sep 2011 06:50:16 +0200 Subject: [PATCH 3/5] fixed typo (+ -> -) to fix #2416 --- js/jquery.mobile.listview.filter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/jquery.mobile.listview.filter.js b/js/jquery.mobile.listview.filter.js index 2d89f5f95b1..4d8d4024a2f 100755 --- a/js/jquery.mobile.listview.filter.js +++ b/js/jquery.mobile.listview.filter.js @@ -44,7 +44,7 @@ $( ":jqmData(role='listview')" ).live( "listviewcreate", function() { // Change val as lastval for next execution $this.jqmData( "lastval" , val ); - change = val.substr( 0 , lastval.length + 1 ).replace( lastval , "" ); + change = val.substr( 0 , lastval.length - 1 ).replace( lastval , "" ); if ( val.length < lastval.length || change.length != ( val.length - lastval.length ) ) { From 8889eb9ac4023c1a0f0c6c16c9c9459cffc41242 Mon Sep 17 00:00:00 2001 From: Hans-Peter Buniat Date: Fri, 23 Sep 2011 08:13:19 +0200 Subject: [PATCH 4/5] added test for #2416 --- tests/unit/listview/listview_core.js | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) mode change 100644 => 100755 tests/unit/listview/listview_core.js diff --git a/tests/unit/listview/listview_core.js b/tests/unit/listview/listview_core.js old mode 100644 new mode 100755 index 80fa59e91ed..15c664a4117 --- a/tests/unit/listview/listview_core.js +++ b/tests/unit/listview/listview_core.js @@ -359,6 +359,25 @@ ]); }); + asyncTest( "Filter works fine with \\W- or regexp-special-characters", function() { + var $searchPage = $(searchFilterId); + $.testHelper.pageSequence([ + function() { + $.testHelper.openPage(searchFilterId); + }, + + function() { + $searchPage.find('input').val('*'); + $searchPage.find('input').trigger('change'); + + setTimeout(function() { + same($searchPage.find('li.ui-screen-hidden').length, 4); + start(); + }, 1000); + } + ]); + }); + test( "Refresh applies thumb styling", function(){ var ul = $('.ui-page-active ul'); @@ -441,7 +460,7 @@ $li = $page.find( "li:visible" ); ok($li.first().hasClass( "ui-corner-top" ), $li.length+" li elements: First visible element should have class ui-corner-top"); ok($li.last().hasClass( "ui-corner-bottom" ), $li.length+" li elements: Last visible element should have class ui-corner-bottom"); - } + }; $.testHelper.pageSequence([ function() { From 5bd8f6872f8933613d77a4914e238442778c1e1a Mon Sep 17 00:00:00 2001 From: Hans-Peter Buniat Date: Sun, 25 Sep 2011 14:12:55 +0200 Subject: [PATCH 5/5] removed settimeout --- tests/unit/listview/listview_core.js | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/tests/unit/listview/listview_core.js b/tests/unit/listview/listview_core.js index 15c664a4117..26ba63e3ad4 100755 --- a/tests/unit/listview/listview_core.js +++ b/tests/unit/listview/listview_core.js @@ -332,10 +332,8 @@ $searchPage.find('input').val('at'); $searchPage.find('input').trigger('change'); - setTimeout(function() { - same($searchPage.find('li.ui-screen-hidden').length, 2); - start(); - }, 1000); + same($searchPage.find('li.ui-screen-hidden').length, 2); + start(); } ]); }); @@ -351,10 +349,8 @@ $searchPage.find('input').val('a'); $searchPage.find('input').trigger('change'); - setTimeout(function() { - same($searchPage.find("li[style^='display: none;']").length, 0); - start(); - }, 1000); + same($searchPage.find("li[style^='display: none;']").length, 0); + start(); } ]); }); @@ -370,10 +366,8 @@ $searchPage.find('input').val('*'); $searchPage.find('input').trigger('change'); - setTimeout(function() { - same($searchPage.find('li.ui-screen-hidden').length, 4); - start(); - }, 1000); + same($searchPage.find('li.ui-screen-hidden').length, 4); + start(); } ]); });