Updated Branches: refs/heads/master cdc3c8588 -> dd76a815c
WICKET-4769 Clicking on Label of Radio doesn't update component with Ajax update Use a precondition to decide whether to make the Ajax call or not. The call is made only for clicks on <input>s. Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/dd76a815 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/dd76a815 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/dd76a815 Branch: refs/heads/master Commit: dd76a815c7da21ef38e0deb36f2f51da25042f6f Parents: cdc3c85 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Tue Oct 2 22:17:16 2012 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Tue Oct 2 22:17:16 2012 +0300 ---------------------------------------------------------------------- .../AjaxFormChoiceComponentUpdatingBehavior.java | 37 ++++----------- 1 files changed, 10 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/dd76a815/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java index 0a66b71..143fd6f 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java @@ -64,36 +64,19 @@ public abstract class AjaxFormChoiceComponentUpdatingBehavior extends AbstractDe asb.append(" function getInputValues(groupId, attributes) {\n"); asb.append(" var result = [], srcElement = attributes.event.target;\n"); - asb.append(" if (srcElement) {\n"); - asb.append(" if (srcElement.tagName.toLowerCase() === 'input') {\n"); - asb.append(" var inputNode = srcElement;\n"); - asb.append(" if (!inputNode.checked) return;\n"); - asb.append(" if (!inputNode.type) return;\n"); - asb.append(" if (!(inputNode.className.indexOf('wicket-'+markupId)>=0)&&!(inputNode.id.indexOf(markupId+'-')>=0)) return;\n"); - asb.append(" var inputType = inputNode.type.toLowerCase();\n"); - asb.append(" if (inputType === 'checkbox' || inputType === 'radio') {\n"); - asb.append(" var name = inputNode.name, value = inputNode.value;\n"); - asb.append(" result.push({ name: name, value: value });\n"); - asb.append(" }\n"); // if (checkbox or radio) - asb.append(" }\n"); // if (tagName == 'input') - - // inputs' labels - asb.append(" else if (srcElement.tagName.toLowerCase() === 'label') {\n"); - asb.append(" var labelNode = srcElement;\n"); - asb.append(" if (!labelNode.htmlFor) return;\n"); - asb.append(" var inputNode = Wicket.$(labelNode.htmlFor);\n"); - asb.append(" if (!inputNode) return;\n"); - asb.append(" if (!(inputNode.className.indexOf('wicket-'+markupId)>=0)&&!(inputNode.id.indexOf(markupId+'-')>=0)) return;\n"); - asb.append(" var inputType = inputNode.type.toLowerCase();\n"); - asb.append(" if (inputType === 'checkbox' || inputType === 'radio') {\n"); - asb.append(" var name = inputNode.name, value = inputNode.value;\n"); - asb.append(" result.push({ name: name, value: value });\n"); - asb.append(" }\n"); // if (checkbox or radio) - asb.append(" }\n"); // else if (tagName == 'label') - asb.append(" }\n"); // if (srcElement) + asb.append(" var inputNode = srcElement;\n"); + asb.append(" if (!inputNode.checked) return;\n"); + asb.append(" if (!inputNode.type) return;\n"); + asb.append(" if (!(inputNode.className.indexOf('wicket-'+markupId)>=0)&&!(inputNode.id.indexOf(markupId+'-')>=0)) return;\n"); + asb.append(" var inputType = inputNode.type.toLowerCase();\n"); + asb.append(" if (inputType === 'checkbox' || inputType === 'radio') {\n"); + asb.append(" var name = inputNode.name, value = inputNode.value;\n"); + asb.append(" result.push({ name: name, value: value });\n"); + asb.append(" }\n"); // if (checkbox or radio) asb.append(" return result;\n"); asb.append(" }\n"); // function getInputValues() + asb.append(" attrs.pre = (attrs.pre || []).concat([ function(attributes) { return attributes.event.target.tagName.toLowerCase() === 'input'; } ]);\n"); asb.append(" attrs.dep = (attrs.dep || []).concat([ function(attributes) { var deps = getInputValues(markupId, attributes); return deps; } ]);\n"); asb.append(" Wicket.Ajax.post(attrs);\n"); asb.append("}\n"); // function attachChoiceHandlers()
