[ 
https://issues.apache.org/jira/browse/TAPESTRY-1663?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12514768
 ] 

Marcus Schulte commented on TAPESTRY-1663:
------------------------------------------

This is a bug in dojo.
Dojo assumed myForm['radioGroupName'] to be an instance of Array if more than 
one input element
of that name exist. This is not the case, however.

It could be fixed by changing/overriding dojo.validate.check to test
for a length-property in the following way:
...
// Does radio button group (or check box group) have option checked.
                        else if(elem.length > 1){    // erroneous check was: 
elem instanceof Array
                                var checked = false;
                                for(var j = 0; j < elem.length; j++){
                                        if (elem[j].checked) { checked = true; }
                                }
                                if(!checked){   
                                        missing[missing.length] = elem[0].name;
                                }
                        }
...

I'm not sure, whether we'll get this fixed in an official dojo 0.4 releas or 
whether we should just patch the thing in Tapestry by overriding the rather 
lengthy function in form.js or so.

> @RadioGroup client-side validation does not work
> ------------------------------------------------
>
>                 Key: TAPESTRY-1663
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-1663
>             Project: Tapestry
>          Issue Type: Bug
>          Components: JavaScript
>    Affects Versions: 4.1.2
>         Environment: Firefox 2.0.0.5 and InternetExplorer 7.0.5730
>            Reporter: Cyrille
>
> The @RadioGroup client-side validation does not work: nothing append at form 
> submit. Notive that it works fine on server-side.
> The Template part :
> <div jwcid="[EMAIL PROTECTED]" selected="ognl:radioGroup01Selected" 
> displayName="RadioGroup 01" validators="validators:required" >
>  choix 1<input type="text" jwcid="[EMAIL PROTECTED]" value="literal:R01" /> 
> <br/>
>  choix 2<input type="radio" jwcid="[EMAIL PROTECTED]" value="literal:R02" />
> </div>
> The generated html :
> ...
> <div>
>  choix 1<input type="radio" name="radioGroup01" id="radioGroup010" value="0" 
> /><br/> 
> choix 2<input type="radio" name="radioGroup01" id="radioGroup011" value="1" />
> </div>
> ...
> <script type="text/javascript"><!--
> dojo.addOnLoad(function(e) {
> dojo.require("tapestry.form");tapestry.form.registerForm("theForm");
> tapestry.form.focusField('text01');
> tapestry.form.clearProfiles('theForm'); 
> tapestry.form.registerProfile('theForm',{"required":["text01","radioGroup01"],"text01":{"required":["Vous
>  devez entrer une valeur pour Le Text 
> 01."]},"radioGroup01":{"required":["Vous devez entrer une valeur pour 
> RadioGroup 01."]}});});
> // --></script></body>
> </html>
> I had a try with a "required" @TextField on the same page, and the 
> client-side works fine for the field, there is only the RadioGroup 
> client-side validation which does not works.
> I think about that, but I a beginner, so it's juste a idea : the javascript 
> validation probably works only with element id, but in case of radios in a 
> radiogroup only the name attribute is the same for all radios.
> Ask me for more detail if needed.
> Cheers
> Cyrille

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to