Wren a web browser where WebAssembly runs everything, JavaScript included

Module forms

Form controls (HTML forms): values, checkedness, validity, selection, select / option / form members, focus, and FormData. Members shared by several interfaces are one function imported under each interface's name (HTMLInputElement_value, HTMLTextAreaElement_value...): it accepts any control and does what HTML says for its kind.

  • selection positions are UTF-16 code units, as in JavaScript; -1 means null (the API does not apply);
  • valueAsDate is milliseconds since the epoch, NaN for null;
  • events: InputEvent.data is Event_data, inputType Event_text; SubmitEvent.submitter, FocusEvent.relatedTarget and FormDataEvent.formData are Event_object.

Exposed to: Window. Source: api/forms.widl.

Odin: import "wren:forms".

Types

handle FormData : Object

Checked by the browser on every call (lookup_FormData).

flags ValidityState : u32

ValidityState: every flag that is set (none = valid).

memberbit
Value_Missing0
Type_Mismatch1
Pattern_Mismatch2
Too_Long3
Too_Short4
Range_Underflow5
Range_Overflow6
Step_Mismatch7
Bad_Input8
Custom_Error9

enum SelectionDirection : i32

membervalue
None0
Forward1
Backward2

enum SelectionMode : i32

setRangeText's selectMode.

membervalue
Preserve0
Select1
Start2
End3

enum FormEnctype : i32

How a FormData body is encoded.

membervalue
Multipart0
Urlencoded1
Text_Plain2

Functions

HTMLInputElement_value

string value(Element control)

control.value

Imported as HTMLInputElement_value, HTMLTextAreaElement_value, HTMLSelectElement_value, HTMLButtonElement_value, HTMLOptionElement_value, HTMLOutputElement_value.

Host: forms_value :: proc(c: ^Call, control: Api_Element) -> string

HTMLInputElement_setValue

void setValue(Element control, string value) raises

control.value = value: Invalid_State for a file input given anything but "".

Imported as HTMLInputElement_setValue, HTMLTextAreaElement_setValue, HTMLSelectElement_setValue, HTMLButtonElement_setValue, HTMLOptionElement_setValue, HTMLOutputElement_setValue.

Raises: returns an Error (see web).

Host: forms_setValue :: proc(c: ^Call, control: Api_Element, value: string) -> Api_Error

HTMLInputElement_defaultValue

string defaultValue(Element control)

Imported as HTMLInputElement_defaultValue, HTMLTextAreaElement_defaultValue, HTMLOutputElement_defaultValue.

Host: forms_defaultValue :: proc(c: ^Call, control: Api_Element) -> string

HTMLInputElement_setDefaultValue

void setDefaultValue(Element control, string value) raises

Imported as HTMLInputElement_setDefaultValue, HTMLTextAreaElement_setDefaultValue, HTMLOutputElement_setDefaultValue.

Raises: returns an Error (see web).

Host: forms_setDefaultValue :: proc(c: ^Call, control: Api_Element, value: string) -> Api_Error

HTMLInputElement_checked

bool checked(Element control)

Host: forms_checked :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_setChecked

void setChecked(Element control, bool checked) raises

Raises: returns an Error (see web).

Host: forms_setChecked :: proc(c: ^Call, control: Api_Element, checked: bool) -> Api_Error

HTMLInputElement_defaultChecked

bool defaultChecked(Element control)

Host: forms_defaultChecked :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_setDefaultChecked

void setDefaultChecked(Element control, bool checked)

Host: forms_setDefaultChecked :: proc(c: ^Call, control: Api_Element, checked: bool)

HTMLInputElement_indeterminate

bool indeterminate(Element control)

Host: forms_indeterminate :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_setIndeterminate

void setIndeterminate(Element control, bool indeterminate)

Host: forms_setIndeterminate :: proc(c: ^Call, control: Api_Element, indeterminate: bool)

HTMLInputElement_type

string type(Element control)

control.type

Imported as HTMLInputElement_type, HTMLTextAreaElement_type, HTMLSelectElement_type, HTMLButtonElement_type, HTMLOutputElement_type, HTMLFieldSetElement_type, HTMLObjectElement_type.

Host: forms_type :: proc(c: ^Call, control: Api_Element) -> string

HTMLInputElement_name

string name(Element control)

control.name

Imported as HTMLInputElement_name, HTMLTextAreaElement_name, HTMLSelectElement_name, HTMLButtonElement_name, HTMLOutputElement_name, HTMLFieldSetElement_name, HTMLObjectElement_name.

Host: forms_name :: proc(c: ^Call, control: Api_Element) -> string

HTMLInputElement_form

Element form(Element control)

The form owner (null when none).

Imported as HTMLInputElement_form, HTMLTextAreaElement_form, HTMLSelectElement_form, HTMLButtonElement_form, HTMLOutputElement_form, HTMLFieldSetElement_form, HTMLObjectElement_form, HTMLOptionElement_form, HTMLLabelElement_form, HTMLLegendElement_form.

Host: forms_form :: proc(c: ^Call, control: Api_Element) -> u64

HTMLInputElement_disabled

bool disabled(Element control)

Imported as HTMLInputElement_disabled, HTMLTextAreaElement_disabled, HTMLSelectElement_disabled, HTMLButtonElement_disabled, HTMLFieldSetElement_disabled, HTMLOptionElement_disabled, HTMLOptGroupElement_disabled.

Host: forms_disabled :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_setDisabled

void setDisabled(Element control, bool disabled)

Imported as HTMLInputElement_setDisabled, HTMLTextAreaElement_setDisabled, HTMLSelectElement_setDisabled, HTMLButtonElement_setDisabled, HTMLFieldSetElement_setDisabled, HTMLOptionElement_setDisabled, HTMLOptGroupElement_setDisabled.

Host: forms_setDisabled :: proc(c: ^Call, control: Api_Element, disabled: bool)

HTMLInputElement_readOnly

bool readOnly(Element control)

Imported as HTMLInputElement_readOnly, HTMLTextAreaElement_readOnly.

Host: forms_readOnly :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_setReadOnly

void setReadOnly(Element control, bool read_only)

Imported as HTMLInputElement_setReadOnly, HTMLTextAreaElement_setReadOnly.

Host: forms_setReadOnly :: proc(c: ^Call, control: Api_Element, read_only: bool)

HTMLInputElement_required

bool required(Element control)

Imported as HTMLInputElement_required, HTMLTextAreaElement_required, HTMLSelectElement_required.

Host: forms_required :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_setRequired

void setRequired(Element control, bool required)

Imported as HTMLInputElement_setRequired, HTMLTextAreaElement_setRequired, HTMLSelectElement_setRequired.

Host: forms_setRequired :: proc(c: ^Call, control: Api_Element, required: bool)

HTMLInputElement_willValidate

bool willValidate(Element control)

Imported as HTMLInputElement_willValidate, HTMLTextAreaElement_willValidate, HTMLSelectElement_willValidate, HTMLButtonElement_willValidate, HTMLOutputElement_willValidate, HTMLFieldSetElement_willValidate, HTMLObjectElement_willValidate.

Host: forms_willValidate :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_validity

ValidityState validity(Element control)

control.validity

Imported as HTMLInputElement_validity, HTMLTextAreaElement_validity, HTMLSelectElement_validity, HTMLButtonElement_validity, HTMLOutputElement_validity, HTMLFieldSetElement_validity, HTMLObjectElement_validity.

Host: forms_validity :: proc(c: ^Call, control: Api_Element) -> Api_ValidityState

HTMLInputElement_validationMessage

string validationMessage(Element control)

Imported as HTMLInputElement_validationMessage, HTMLTextAreaElement_validationMessage, HTMLSelectElement_validationMessage, HTMLButtonElement_validationMessage, HTMLOutputElement_validationMessage, HTMLFieldSetElement_validationMessage, HTMLObjectElement_validationMessage.

Host: forms_validationMessage :: proc(c: ^Call, control: Api_Element) -> string

HTMLInputElement_setCustomValidity

void setCustomValidity(Element control, string message)

Imported as HTMLInputElement_setCustomValidity, HTMLTextAreaElement_setCustomValidity, HTMLSelectElement_setCustomValidity, HTMLButtonElement_setCustomValidity, HTMLOutputElement_setCustomValidity, HTMLFieldSetElement_setCustomValidity, HTMLObjectElement_setCustomValidity.

Host: forms_setCustomValidity :: proc(c: ^Call, control: Api_Element, message: string)

HTMLInputElement_checkValidity

bool checkValidity(Element control)

checkValidity(): fires "invalid" when it is not valid.

Imported as HTMLInputElement_checkValidity, HTMLTextAreaElement_checkValidity, HTMLSelectElement_checkValidity, HTMLButtonElement_checkValidity, HTMLOutputElement_checkValidity, HTMLFieldSetElement_checkValidity, HTMLObjectElement_checkValidity, HTMLFormElement_checkValidity.

Host: forms_checkValidity :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_reportValidity

bool reportValidity(Element control)

reportValidity(): also shows the problem to the user.

Imported as HTMLInputElement_reportValidity, HTMLTextAreaElement_reportValidity, HTMLSelectElement_reportValidity, HTMLButtonElement_reportValidity, HTMLOutputElement_reportValidity, HTMLFieldSetElement_reportValidity, HTMLObjectElement_reportValidity, HTMLFormElement_reportValidity.

Host: forms_reportValidity :: proc(c: ^Call, control: Api_Element) -> bool

HTMLInputElement_select

void select(Element control) raises

Imported as HTMLInputElement_select, HTMLTextAreaElement_select.

Raises: returns an Error (see web).

Host: forms_select :: proc(c: ^Call, control: Api_Element) -> Api_Error

HTMLInputElement_selectionStart

i32 selectionStart(Element control)

Imported as HTMLInputElement_selectionStart, HTMLTextAreaElement_selectionStart.

Host: forms_selectionStart :: proc(c: ^Call, control: Api_Element) -> i32

HTMLInputElement_selectionEnd

i32 selectionEnd(Element control)

Imported as HTMLInputElement_selectionEnd, HTMLTextAreaElement_selectionEnd.

Host: forms_selectionEnd :: proc(c: ^Call, control: Api_Element) -> i32

HTMLInputElement_selectionDirection

string selectionDirection(Element control) raises

"forward", "backward" or "none". Invalid_State when the control has no selection.

Imported as HTMLInputElement_selectionDirection, HTMLTextAreaElement_selectionDirection.

Raises: returns an Error (see web).

Host: forms_selectionDirection :: proc(c: ^Call, control: Api_Element) -> (string, Api_Error)

HTMLInputElement_setSelectionRange

void setSelectionRange(Element control, i32 start, i32 end, SelectionDirection direction = None) raises

Imported as HTMLInputElement_setSelectionRange, HTMLTextAreaElement_setSelectionRange.

Raises: returns an Error (see web).

Host: forms_setSelectionRange :: proc(c: ^Call, control: Api_Element, start: i32, end: i32, direction: Api_SelectionDirection) -> Api_Error

HTMLInputElement_setRangeText

void setRangeText(Element control, string text, i32 start = -1, i32 end = -1, SelectionMode mode = Preserve) raises

setRangeText(text, start, end, mode): start / end < 0 use the selection.

Imported as HTMLInputElement_setRangeText, HTMLTextAreaElement_setRangeText.

Raises: returns an Error (see web).

Host: forms_setRangeText :: proc(c: ^Call, control: Api_Element, text: string, start: i32, end: i32, mode: Api_SelectionMode) -> Api_Error

HTMLInputElement_maxLength

i32 maxLength(Element control)

Imported as HTMLInputElement_maxLength, HTMLTextAreaElement_maxLength.

Host: forms_maxLength :: proc(c: ^Call, control: Api_Element) -> i32

HTMLInputElement_minLength

i32 minLength(Element control)

Imported as HTMLInputElement_minLength, HTMLTextAreaElement_minLength.

Host: forms_minLength :: proc(c: ^Call, control: Api_Element) -> i32

HTMLInputElement_stepUp

void stepUp(Element control, i32 count = 1) raises

Raises: returns an Error (see web).

Host: forms_stepUp :: proc(c: ^Call, control: Api_Element, count: i32) -> Api_Error

HTMLInputElement_stepDown

void stepDown(Element control, i32 count = 1) raises

Raises: returns an Error (see web).

Host: forms_stepDown :: proc(c: ^Call, control: Api_Element, count: i32) -> Api_Error

HTMLInputElement_valueAsNumber

f64 valueAsNumber(Element control)

Host: forms_valueAsNumber :: proc(c: ^Call, control: Api_Element) -> f64

HTMLInputElement_setValueAsNumber

void setValueAsNumber(Element control, f64 value) raises

Raises: returns an Error (see web).

Host: forms_setValueAsNumber :: proc(c: ^Call, control: Api_Element, value: f64) -> Api_Error

HTMLInputElement_valueAsDate

f64 valueAsDate(Element control)

NaN for null.

Host: forms_valueAsDate :: proc(c: ^Call, control: Api_Element) -> f64

HTMLInputElement_setValueAsDate

void setValueAsDate(Element control, f64 ms) raises

NaN sets null.

Raises: returns an Error (see web).

Host: forms_setValueAsDate :: proc(c: ^Call, control: Api_Element, ms: f64) -> Api_Error

HTMLInputElement_files_length

i32 files_length(Element control)

input.files.length

Host: forms_files_length :: proc(c: ^Call, control: Api_Element) -> i32

HTMLInputElement_fileName

string fileName(Element control, i32 index) raises

Raises: returns an Error (see web).

Host: forms_fileName :: proc(c: ^Call, control: Api_Element, index: i32) -> (string, Api_Error)

HTMLInputElement_fileSize

i64 fileSize(Element control, i32 index)

-1 past the end.

Host: forms_fileSize :: proc(c: ^Call, control: Api_Element, index: i32) -> i64

HTMLInputElement_fileType

string fileType(Element control, i32 index) raises

Raises: returns an Error (see web).

Host: forms_fileType :: proc(c: ^Call, control: Api_Element, index: i32) -> (string, Api_Error)

HTMLSelectElement_selectedIndex

i32 HTMLSelectElement_selectedIndex(Element select)

Host: HTMLSelectElement_selectedIndex :: proc(c: ^Call, select: Api_Element) -> i32

HTMLSelectElement_setSelectedIndex

void HTMLSelectElement_setSelectedIndex(Element select, i32 index) raises

Invalid_Handle when it is not a select.

Raises: returns an Error (see web).

Host: HTMLSelectElement_setSelectedIndex :: proc(c: ^Call, select: Api_Element, index: i32) -> Api_Error

HTMLSelectElement_length

i32 HTMLSelectElement_length(Element select)

Host: HTMLSelectElement_length :: proc(c: ^Call, select: Api_Element) -> i32

HTMLSelectElement_item

Element HTMLSelectElement_item(Element select, i32 index)

select.item(index): null past the end.

Host: HTMLSelectElement_item :: proc(c: ^Call, select: Api_Element, index: i32) -> u64

HTMLSelectElement_selectedOptions_length

i32 HTMLSelectElement_selectedOptions_length(Element select)

Host: HTMLSelectElement_selectedOptions_length :: proc(c: ^Call, select: Api_Element) -> i32

HTMLSelectElement_selectedOptions_item

Element HTMLSelectElement_selectedOptions_item(Element select, i32 index)

Host: HTMLSelectElement_selectedOptions_item :: proc(c: ^Call, select: Api_Element, index: i32) -> u64

HTMLOptionElement_selected

bool HTMLOptionElement_selected(Element option)

Host: HTMLOptionElement_selected :: proc(c: ^Call, option: Api_Element) -> bool

HTMLOptionElement_setSelected

void HTMLOptionElement_setSelected(Element option, bool selected) raises

Raises: returns an Error (see web).

Host: HTMLOptionElement_setSelected :: proc(c: ^Call, option: Api_Element, selected: bool) -> Api_Error

HTMLOptionElement_defaultSelected

bool HTMLOptionElement_defaultSelected(Element option)

Host: HTMLOptionElement_defaultSelected :: proc(c: ^Call, option: Api_Element) -> bool

HTMLOptionElement_setDefaultSelected

void HTMLOptionElement_setDefaultSelected(Element option, bool selected) raises

Raises: returns an Error (see web).

Host: HTMLOptionElement_setDefaultSelected :: proc(c: ^Call, option: Api_Element, selected: bool) -> Api_Error

HTMLOptionElement_index

i32 HTMLOptionElement_index(Element option)

Host: HTMLOptionElement_index :: proc(c: ^Call, option: Api_Element) -> i32

HTMLOptionElement_text

string HTMLOptionElement_text(Element option)

Host: HTMLOptionElement_text :: proc(c: ^Call, option: Api_Element) -> string

HTMLOptionElement_label

string HTMLOptionElement_label(Element option)

Host: HTMLOptionElement_label :: proc(c: ^Call, option: Api_Element) -> string

HTMLFormElement_submit

void HTMLFormElement_submit(Element form) raises

form.submit(): no submit event, no validation.

Raises: returns an Error (see web).

Host: HTMLFormElement_submit :: proc(c: ^Call, form: Api_Element) -> Api_Error

HTMLFormElement_requestSubmit

void HTMLFormElement_requestSubmit(Element form, optional Element submitter) raises

form.requestSubmit(submitter)

Raises: returns an Error (see web).

Host: HTMLFormElement_requestSubmit :: proc(c: ^Call, form: Api_Element, submitter: Api_Element) -> Api_Error

HTMLFormElement_reset

void HTMLFormElement_reset(Element form) raises

Raises: returns an Error (see web).

Host: HTMLFormElement_reset :: proc(c: ^Call, form: Api_Element) -> Api_Error

HTMLFormElement_length

i32 HTMLFormElement_length(Element form)

Host: HTMLFormElement_length :: proc(c: ^Call, form: Api_Element) -> i32

HTMLFormElement_elements

Element HTMLFormElement_elements(Element form, i32 index)

form.elements[index]: null past the end.

Host: HTMLFormElement_elements :: proc(c: ^Call, form: Api_Element, index: i32) -> u64

HTMLFormElement_namedItem

Element HTMLFormElement_namedItem(Element form, string name)

form.elements.namedItem(name): the first owned element whose id or name is name (null when none).

Host: HTMLFormElement_namedItem :: proc(c: ^Call, form: Api_Element, name: string) -> u64

HTMLLabelElement_control

Element HTMLLabelElement_control(Element label)

label.control (null when none).

Host: HTMLLabelElement_control :: proc(c: ^Call, label: Api_Element) -> u64

HTMLElement_focus

bool HTMLElement_focus(Element element)

element.focus(): whether it got the focus.

Host: HTMLElement_focus :: proc(c: ^Call, element: Api_Element) -> bool

HTMLElement_blur

void HTMLElement_blur(Element element)

Host: HTMLElement_blur :: proc(c: ^Call, element: Api_Element)

HTMLElement_click

bool HTMLElement_click(Element element)

element.click(): false when the click was cancelled.

Host: HTMLElement_click :: proc(c: ^Call, element: Api_Element) -> bool

Document_activeElement

Element Document_activeElement()

document.activeElement (the body when nothing has the focus).

Host: Document_activeElement :: proc(c: ^Call) -> u64

HTMLDialogElement_returnValue

string HTMLDialogElement_returnValue(Element dialog)

Host: HTMLDialogElement_returnValue :: proc(c: ^Call, dialog: Api_Element) -> string

HTMLDialogElement_set_returnValue

void HTMLDialogElement_set_returnValue(Element dialog, string value)

Host: HTMLDialogElement_set_returnValue :: proc(c: ^Call, dialog: Api_Element, value: string)

FormData_create

FormData FormData_create(optional Element form, optional Element submitter) raises

new FormData(form, submitter): both optional. Invalid_Handle when form is not a form or submitter not one of its submit buttons, Invalid_State while the form is constructing its entry list.

Raises: returns an Error (see web).

Host: FormData_create :: proc(c: ^Call, form: Api_Element, submitter: Api_Element) -> (u64, Api_Error)

FormData_append

void FormData_append(FormData data, usvstring name, usvstring value) raises

Invalid_Argument past forms.max_entries.

Raises: returns an Error (see web).

Host: FormData_append :: proc(c: ^Call, data: Api_FormData, name: string, value: string) -> Api_Error

FormData_appendBlob

void FormData_appendBlob(FormData data, usvstring name, Buffer blob, usvstring filename = "", string mime = "") raises

append(name, blob, filename): the bytes of a buffer as a file entry ("blob" when no file name is given).

Raises: returns an Error (see web).

Host: FormData_appendBlob :: proc(c: ^Call, data: Api_FormData, name: string, blob: Api_Buffer, filename: string, mime: string) -> Api_Error

FormData_set

void FormData_set(FormData data, usvstring name, usvstring value) raises

set(name, value): replaces the first entry of that name and removes the others.

Raises: returns an Error (see web).

Host: FormData_set :: proc(c: ^Call, data: Api_FormData, name: string, value: string) -> Api_Error

FormData_delete

void FormData_delete(FormData data, string name)

Host: FormData_delete :: proc(c: ^Call, data: Api_FormData, name: string)

FormData_has

bool FormData_has(FormData data, string name)

Host: FormData_has :: proc(c: ^Call, data: Api_FormData, name: string) -> bool

FormData_count

i32 FormData_count(FormData data, string name)

getAll(name).length

Host: FormData_count :: proc(c: ^Call, data: Api_FormData, name: string) -> i32

FormData_get

string FormData_get(FormData data, string name) raises

get(name): the value (a file entry gives its file name). Not_Found when absent.

Raises: returns an Error (see web).

Host: FormData_get :: proc(c: ^Call, data: Api_FormData, name: string) -> (string, Api_Error)

FormData_getAt

string FormData_getAt(FormData data, string name, i32 index) raises

getAll(name)[index]

Raises: returns an Error (see web).

Host: FormData_getAt :: proc(c: ^Call, data: Api_FormData, name: string, index: i32) -> (string, Api_Error)

FormData_size

i32 FormData_size(FormData data)

The number of entries.

Host: FormData_size :: proc(c: ^Call, data: Api_FormData) -> i32

FormData_nameAt

string FormData_nameAt(FormData data, i32 index) raises

Raises: returns an Error (see web).

Host: FormData_nameAt :: proc(c: ^Call, data: Api_FormData, index: i32) -> (string, Api_Error)

FormData_valueAt

string FormData_valueAt(FormData data, i32 index) raises

Raises: returns an Error (see web).

Host: FormData_valueAt :: proc(c: ^Call, data: Api_FormData, index: i32) -> (string, Api_Error)

FormData_isFileAt

bool FormData_isFileAt(FormData data, i32 index) raises

Raises: returns an Error (see web).

Host: FormData_isFileAt :: proc(c: ^Call, data: Api_FormData, index: i32) -> (bool, Api_Error)

FormData_fileSizeAt

i64 FormData_fileSizeAt(FormData data, i32 index)

-1 for a non-file entry or past the end.

Host: FormData_fileSizeAt :: proc(c: ^Call, data: Api_FormData, index: i32) -> i64

FormData_fileTypeAt

string FormData_fileTypeAt(FormData data, i32 index) raises

Raises: returns an Error (see web).

Host: FormData_fileTypeAt :: proc(c: ^Call, data: Api_FormData, index: i32) -> (string, Api_Error)

FormData_fileAt

Buffer FormData_fileAt(FormData data, i32 index) raises

The bytes of the index-th entry, a file (a file chosen in an <input type=file> is read now). Not_Found when there is no such entry or it is not a file.

Raises: returns an Error (see web).

Host: FormData_fileAt :: proc(c: ^Call, data: Api_FormData, index: i32) -> (u64, Api_Error)

FormData_setBlob

void FormData_setBlob(FormData data, usvstring name, Buffer blob, usvstring filename = "", string mime = "") raises

set(name, blob, filename): like FormData_set with a file entry.

Raises: returns an Error (see web).

Host: FormData_setBlob :: proc(c: ^Call, data: Api_FormData, name: string, blob: Api_Buffer, filename: string, mime: string) -> Api_Error

FormData_encode

Buffer FormData_encode(FormData data, string boundary) raises

The entries as a multipart/form-data body with this boundary (files chosen in an <input type=file> are read now).

Raises: returns an Error (see web).

Host: FormData_encode :: proc(c: ^Call, data: Api_FormData, boundary: string) -> (u64, Api_Error)

Edit this page on GitHub