[
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.