The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

HTML::Object::DOM::Element::Form - HTML Object DOM Form Class

SYNOPSIS

    use HTML::Object::DOM::Element::Form;
    my $form = HTML::Object::DOM::Element::Form->new || 
        die( HTML::Object::DOM::Element::Form->error, "\n" );

VERSION

    v0.2.0

DESCRIPTION

This interface represents a <form> element in the DOM. It allows access to—and, in some cases, modification of—aspects of the form, as well as access to its component elements.

INHERITANCE

    +-----------------------+     +---------------------------+     +-------------------------+     +----------------------------+     +----------------------------------+
    | HTML::Object::Element | --> | HTML::Object::EventTarget | --> | HTML::Object::DOM::Node | --> | HTML::Object::DOM::Element | --> | HTML::Object::DOM::Element::Form |
    +-----------------------+     +---------------------------+     +-------------------------+     +----------------------------+     +----------------------------------+

PROPERTIES

Inherits properties from its parent HTML::Object::DOM::Element

acceptCharset

A string reflecting the value of the form's accept-charset HTML attribute, representing the character encoding that the server accepts.

Example:

    <form action="/some/where" accept-charset="utf-8">
        <button>Ok</button>
    </form>

    my $inputs = $doc->forms->[0]->acceptCharset; # utf-8

See also Mozilla documentation

action

A string reflecting the value of the form's action HTML attribute, containing the URI of a program that processes the information submitted by the form.

Example:

    var $form = $doc->forms->[0];
    $form->action = '/cgi-bin/publish';

See also Mozilla documentation

autocomplete

A string (on or off) reflecting the value of the form's autocomplete HTML attribute, indicating whether the controls in this form can have their values automatically populated by the browser.

See also Mozilla documentation

elements

Read-only.

A collection object holding all form controls belonging to this form element.

Example:

    <form id="my-form">
        <input type="text" name="username">
        <input type="text" name="full-name">
        <input type="password" name="password">
    </form>

    my $inputs = $doc->getElementById("my-form")->elements;
    my $inputByIndex = $inputs->[0];
    my $inputByName = $inputs->username;

Another example:

    my $inputs = $doc->getElementById("my-form")->elements;

    # Iterate over the form controls
    for( my $i = 0; $i < $inputs->length; $i++ )
    {
        if( $inputs->[i]->nodeName == "INPUT" && $inputs->[i]->type == "text" )
        {
            # Update text input
            $inputs->[i]->value->toLocaleUpperCase();
        }
    }

Another example:

    my $inputs = $doc->getElementById("my-form")->elements;

    # Iterate over the form controls
    for( my $i = 0; $i < $inputs->length; $i++ )
    {
        # Disable all form controls
        $inputs->[$i]->setAttribute( "disabled", "" );
    }

See also Mozilla documentation, StackOverflow question

encoding

A string reflecting the value of the form's enctype HTML attribute, indicating the type of content that is used to transmit the form to the server. Only specified values can be set. The two properties are synonyms.

See also Mozilla documentation

length

Read-only.

A long reflecting the number of controls in the form.

Example:

    if( $doc->getElementById('form1')->length > 1 )
    {
        # more than one form control here
    }

See also Mozilla documentation

method

A string reflecting the value of the form's method HTML attribute, indicating the HTTP method used to submit the form. Only specified values can be set.

Example:

    $doc->forms->myform->method = 'post';

    my $formElement = $doc->createElement("form"); # Create a form
    $doc->body->appendChild( $formElement );
    say( $formElement->method ); # 'get'

See also Mozilla documentation

name

A string reflecting the value of the form's name HTML attribute, containing the name of the form.

Example:

    my $string = form->name;
    form->name = $string;

    my $form1name = $doc->getElementById('form1').name;

    if ($form1name != $doc->form->form1) {
        # Browser does not support this form of reference
    }

See also Mozilla documentation

noValidate

A boolean value reflecting the value of the form's novalidate HTML attribute, indicating whether the form should not be validated.

See also Mozilla documentation

target

A URL reflecting the value of the form's target HTML attribute, indicating where to display the results received from submitting the form.

Example:

    $myForm->target = $doc->frames->[1]->name;

See also Mozilla documentation

METHODS

Inherits methods from its parent HTML::Object::DOM::Element

checkValidity

In perl, this always returns true, or whatever value you would have set.

In JavaScript environment, this returns true if the element's child controls are subject to constraint validation and satisfy those constraints; returns false if some controls do not satisfy their constraints. Fires an event named invalid at any control that does not satisfy its constraints; such controls are considered invalid if the event is not canceled. It is up to the programmer to decide how to respond to false.

See also Mozilla documentation

reportValidity

In perl, this always returns true, or whatever value you would have set.

In JavaScript environment, this returns true if the element's child controls satisfy their validation constraints. When false is returned, cancelable invalid events are fired for each invalid child and validation problems are reported to the user.

Example:

    $doc->forms->myform->addEventListener( submit => sub
    {
        $doc->forms->myform->reportValidity();
    }, { capture => 0 });

See also Mozilla documentation

requestSubmit

Requests that the form be submitted using the specified submit button object and its corresponding configuration.

Example:

    my $myForm = $doc->querySelector( 'form' );
    my $submitButton = $myForm->querySelector( '#main-submit' );

    if( $myForm->requestSubmit )
    {
        if( $submitButton )
        {
            $myForm->requestSubmit( $submitButton );
        }
        else
        {
            $myForm->requestSubmit();
        }
    }
    else
    {
        $myForm->submit();
    }

See also Mozilla documentation

submit

This does nothing and returns undef under perl environment.

In JavaScript environment, this submits the form to the server.

Example:

    $doc->forms->myform->submit();

See also Mozilla documentation

AUTHOR

Jacques Deguest <jack@deguest.jp>

SEE ALSO

Mozilla documentation, Mozilla documentation on form element

COPYRIGHT & LICENSE

Copyright(c) 2021 DEGUEST Pte. Ltd.

All rights reserved

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.