WICKET-4529 AjaxEditableLabel not selecting text or moving cursor on Firefox 11.0 or Safari 5.0.5
Call just element.select() if select is a member method. Fix reference to the 'event' object in Ajax call Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/be8a4eaa Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/be8a4eaa Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/be8a4eaa Branch: refs/heads/master Commit: be8a4eaaf1537059b78d8d0994a6361cb8fbaa76 Parents: a14fd50 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed May 16 09:35:41 2012 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Wed May 16 09:35:41 2012 +0200 ---------------------------------------------------------------------- .../ajax/markup/html/AjaxEditableLabel.java | 20 ++++++-------- .../markup/html/AjaxEditableMultiLineLabel.java | 4 +- 2 files changed, 11 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/be8a4eaa/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java index b1c5493..419e5e9 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableLabel.java @@ -311,7 +311,7 @@ public class AjaxEditableLabel<T> extends Panel attributes.setEventNames("blur", "keyup"); CharSequence dynamicExtraParameters = "var result = [], " - + "kc=Wicket.Event.keyCode(event)," + + "kc=Wicket.Event.keyCode(attrs.event)," + "evtType=attrs.event.type;" + "if (evtType === 'keyup') {" + @@ -326,7 +326,7 @@ public class AjaxEditableLabel<T> extends Panel + "return result;"; attributes.getDynamicExtraParameters().add(dynamicExtraParameters); - CharSequence precondition = "var kc=Wicket.Event.keyCode(event)," + CharSequence precondition = "var kc=Wicket.Event.keyCode(attrs.event)," + "evtType=attrs.event.type," + "ret=false;" + "if(evtType==='blur' || (evtType==='keyup' && (kc===27 || kc===13))) ret = true;" @@ -396,7 +396,7 @@ public class AjaxEditableLabel<T> extends Panel */ protected String getLabelAjaxEvent() { - return "onclick"; + return "click"; } @@ -469,12 +469,9 @@ public class AjaxEditableLabel<T> extends Panel label.setVisible(false); editor.setVisible(true); target.add(AjaxEditableLabel.this); - // put focus on the textfield and stupid explorer hack to move the - // caret to the end - target.appendJavaScript("{ var el=Wicket.$('" + editor.getMarkupId() + "');" + - " if (el.createTextRange) { " + - " var v = el.value; var r = el.createTextRange(); " + - " r.moveStart('character', v.length); r.select(); } }"); + String selectScript = String.format("(function(){var el = Wicket.$('%s'); if (el.select) el.select();})()", + editor.getMarkupId()); + target.appendJavaScript(selectScript); target.focusComponent(editor); } @@ -492,8 +489,9 @@ public class AjaxEditableLabel<T> extends Panel target.appendJavaScript("window.status='" + JavaScriptUtils.escapeQuotes(errorMessage.toString()) + "';"); } - target.appendJavaScript("{var el=Wicket.$('" + editor.getMarkupId() + - "'); el.select(); el.focus();}"); + String selectAndFocusScript = String.format("(function(){var el=Wicket.$('%s'); if (el.select) el.select(); el.focus();})()", + editor.getMarkupId()); + target.appendJavaScript(selectAndFocusScript); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/be8a4eaa/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java index e0e016c..be92392 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/AjaxEditableMultiLineLabel.java @@ -185,7 +185,7 @@ public class AjaxEditableMultiLineLabel<T> extends AjaxEditableLabel<T> attributes.setEventNames("blur", "keyup"); CharSequence dynamicExtraParameters = "var result = [], " + - "kc=Wicket.Event.keyCode(event)," + + "kc=Wicket.Event.keyCode(attrs.event)," + "evtType=attrs.event.type;" + "if (evtType === 'keyup') {" + // ESCAPE key @@ -196,7 +196,7 @@ public class AjaxEditableMultiLineLabel<T> extends AjaxEditableLabel<T> attributes.getDynamicExtraParameters().add(dynamicExtraParameters); CharSequence precondition = - "var kc=Wicket.Event.keyCode(event),"+ + "var kc=Wicket.Event.keyCode(attrs.event),"+ "evtType=attrs.event.type,"+ "ret=false;"+ "if(evtType==='blur' || (evtType==='keyup' && (kc===27))) ret = true;"+
