On Wed, 2005-10-26 at 13:31 -0400, Ben Anderson wrote:
> Hi,
> So I was trying to put javascript validation right into my form
> definition, but ran into some funkiness (at least from my
> perspective).
>
> First of all I realized that putting the javascript in a field doesn't
> "invalidate" the form:
>
> Here's my form definition:
> <fd:validation>
> <fd:javascript>
> <fd:failmessage>failed on form</fd:failmessage>
> cocoon.log.debug("form returning false");
> return false;
> </fd:javascript>
> </fd:validation>
> <fd:widgets>
> <fd:field id="action">
> <fd:label>action</fd:label>
> <fd:datatype base="string"/>
> <fd:validation>
> <fd:javascript>
> cocoon.log.debug("widget returning false");
> return false;
> </fd:javascript>
> </fd:validation>
> </fd:field>
>
> What's interesting is that both log messages are printed. However, if
> I change the <fd:javascript> on the form to return true then
> widget.isValid() returns true even though my action field still
> returns false. CForms online documentation for <fd:javascript> says
> to consult the examples in the source. I only found one example and
> it is directly under the form (not the widget).
>
> Question #1: This leads me to believe that maybe I can't put
> <fd:javascript> under the <fd:field><fd:validation> element?
>
> Also, the <fd:failmessage> element was wishful thinking on my part
> which doesn't seem to do anything. The xml of the form looks the same
> after the forms transformer whether I return true or false.
>
> Question #2: Using <fd:javascript> for validation, is there a way to
> get messages printed out at all let alone something useful like this
>
> <fd:javascript>
> if (!someDAO.getOrders().size() > 0) {
> // send "must attach order" message
> } else if (!someOtherDAO.isValidCustomer()) {
> // send "must register first" message
> ...
>
> Maybe I'm just pushing the limits of the javascript validator... any
> ideas?
In the javascript validation (or in any validation for that matter), if
you return false, you should also set a validation error on the widget
to which the validator belongs, or a child/descendant widget of that
widget (e.g. in case the validator belongs to a form or repeater).
Have a look at the source of the samples for how to do this.
--
Bruno Dumon http://outerthought.org/
Outerthought - Open Source, Java & XML Competence Support Center
[EMAIL PROTECTED] [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]