You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Vaynberg (JIRA)" <ji...@apache.org> on 2008/11/05 17:53:44 UTC
[jira] Resolved: (WICKET-1914) Form.appendDefaultButtonField
produces invalid JavaScript if Ajax is disabled
[ https://issues.apache.org/jira/browse/WICKET-1914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Vaynberg resolved WICKET-1914.
-----------------------------------
Resolution: Fixed
Fix Version/s: 1.4-RC2
1.3.6
Assignee: Igor Vaynberg
> Form.appendDefaultButtonField produces invalid JavaScript if Ajax is disabled
> -----------------------------------------------------------------------------
>
> Key: WICKET-1914
> URL: https://issues.apache.org/jira/browse/WICKET-1914
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.3.4, 1.3.5
> Reporter: Matthias Keller
> Assignee: Igor Vaynberg
> Fix For: 1.3.6, 1.4-RC2
>
>
> Form.appendDefaultButtonField produces a line like this:
> <input type="submit" name="buttons:next" onclick=" var b=Wicket.$('next2'); if (typeof(b.onclick) != 'undefined') { var r = b.onclick.bind(b)(); if (r != false) b.click(); } else { b.click(); }; return false;" />
> If Ajax is disabled, var b=Wicket.$('next2') is invalid, as Wicket is not defined. I'm not familiar with what the bind() method does or whether it is needed or not, but the error is ugly and appears whenever a user tries to submit a Form by pressing Enter instead of clicking on the submit button.
> My proposed fix uses getElementById to get a reference to the submit component. Which requires that the markup ID is present.
> This can either be done on the fly inside appendDefaultButtonField() or maybe better in setDefaultButton().
> Here's the fix that works for me on non-ajax pages:
> protected void appendDefaultButtonField (MarkupStream markupStream, ComponentTag openTag) {
>
> AppendingStringBuffer buffer = new AppendingStringBuffer();
> // div that is not visible (but not display:none either)
> buffer.append("<div style=\"width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden\">");
> // add an empty textfield (otherwise IE doesn't work)
> buffer.append("<input type=\"text\" autocomplete=\"false\"/>");
> // add the submitting component
> final Component submittingComponent = (Component) getDefaultButton();
> submittingComponent.setOutputMarkupId(true);
>
> buffer.append("<input type=\"submit\" name=\"");
> buffer.append(getDefaultButton().getInputName());
> buffer.append("\" onclick=\" var b=document.getElementById('");
> buffer.append(submittingComponent.getMarkupId());
> buffer.append("'); if (b) { if (typeof(b.onclick) != 'undefined') { var r = b.onclick.bind(b)(); if (r != false) b.click(); } else { b.click(); } return false;}\"");
> buffer.append(" />");
>
> // close div
> buffer.append("</div>");
> getResponse().write(buffer);
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.