D>

Реализовано в

JavaScript 1.0

Описание

Каждый элемент формы имеет свойство form которое является ссылкой на родительскую форму элемента. Это свойство используется в основном с обработчиками событий, где может понадобиться обратиться к другому элементу текущей формы.

Пример

В этом примере показана форма с несколькими элементами. Если пользователь щёлкает на кнопке button2, функция showElements выводит alert-диалог с именами всех элементов формы myForm.

<SCRIPT>
function showElements(theForm) {
   str = "Form Elements of form " + theForm.name + ": \n "
   for (i = 0; i < theForm.length; i++)
      str += theForm.elements[i].name + "\n"
   alert(str)
}
</SCRIPT>
<FORM NAME="myForm">
Form name:<INPUT TYPE="text" NAME="text1" VALUE="Beluga">
<P>
<INPUT NAME="button1" TYPE="button" VALUE="Show Form Name"
   onClick="this.form.text1.value=this.form.name">
<INPUT NAME="button2" TYPE="submit" VALUE="Show Form Elements"
   onClick="showElements(this.form)">
</FORM>

Диалог alert выведет следующий текст:

Form Elements of form myForm:
text1
button1
button2

См. также

Form

handleEvent


Вызывает обработчик для специфицированного события.

Метод из

Submit

Реализован в

JavaScript 1.2

Синтаксис

handleEvent(event)

Параметр

event

Имя события, для которого специфицированный объект имеет обработчик.

Описание

Об обработке событий см. книгу Клиентский JavaScript. Руководство.

name


Строка, специфицирующая имя submit-кнопки.

Свойство из

Submit

Реализовано в

JavaScript 1.0

Безопасность

JavaScript 1.1. Это свойство разрушено по умолчанию. О разрушении данных см. книгу Клиентский JavaScript. Руководство.

Описание

Свойство name первоначально отражает значение атрибута NAME. Изменение свойства name переопределяет значение атрибута.

Не путайте свойство name с текстом, отображаемым на поверхности Submit-кнопки. Свойство value специфицирует текст на кнопке. Свойство name не выводится на экран; оно используется для программного обращения к кнопке.

Если несколько объектов на одной форме имеют одинаковые значения атрибута NAME, автоматически создаётся массив с данным именем. Каждый элемент этого массива представляет отдельный Form-объект. Элементы индексируются в порядке расположения в исходном коде, начиная с 0. Например, если два элемента Text и элемент Submit на одной форме имеют в своих атрибутах NAME значение "myField", создаётся массив из элементов myField[0], myField[1] и myField[2]. Вы должны знать о такой ситуации в Вашем коде и знать, ссылается ли myField на единственный элемент или на массив элементов.

Пример

Здесь функция valueGetter использует цикл for для итерации по массиву элементов формы valueTest. Окно msgWindow отображает имена всех элементов формы:

newWindow=window.open("http://home.netscape.com")
function valueGetter() {
   var msgWindow=window.open("")
   for (var i = 0; i < newWindow.document.valueTest.elements.length; i++) {
      msgWindow.document.write(newWindow.document.valueTest.elements[i].name + "<BR>")
   }
}

См. также

Submit.value

type


Для всех Submit-объектов значение свойства type будет "submit". Это свойство специфицирует тип элемента формы.

Свойство из

Submit

Только для чтения

Реализовано в

JavaScript 1.1

Пример

Записываются значения свойства type каждого элемента формы.

for (var i = 0; i < document.form1.elements.length; i++) {
   document.writeln("<BR>type is " + document.form1.elements[i].type)
}

value


Строка, отражающая значение атрибута VALUE кнопки submit.

Свойство из

Submit

Только для чтения

Реализовано в

JavaScript 1.0

Безопасность

JavaScript 1.1. Это свойство разрушено по умолчанию. О разрушении данных см. книгу Клиентский JavaScript. Руководство.

Описание

Если атрибут VALUE специфицируется в HTML, свойство value будет содержать эту же строку, и она будет отображаться на поверхности кнопки. Если атрибут VALUE не специфицируется в HTML, свойство value кнопки будет иметь значение "Submit Query".

Не путайте свойство value со свойством name. Свойство name не отображается на экране; оно используется для программного обращения к кнопке.

Пример

Следующая функция вычисляет свойство value группы кнопок и выводит его в окне msgWindow:

function valueGetterбразом, что он может быть
вставлен в результирующее ОТД в
соответствующей точке). Подмодуль
квалифицированных имён конструируется с
прохождением следующих этапов (где строка MODULE
заменена на соответствующую строку
нового модуля):

  1. Определить объект параметра MODULE с префиксом, извещающим о том, используются ли элементы модуля с именами с префиксами ПИ XML, или нет. Значение по умолчанию этого объекта параметра должно быть "%NS.prefixed;". Объект параметра NS.prefixed определён каркасом XHTML как IGNORE по умолчанию и может использоваться в объекте документа для запуска (switch on) префиксирования для всех включённых пространств имён (в том числе и ПИ модулей XHTML).
  2. Определить объект параметра MODULE.xmlns, содержащий идентификатор ПИ для этого модуля.
  3. Определить объект параметра MODULE.prefix, содержащий строку префикса по умолчанию для использования при запущенном префиксировании (enabled).
  4. Определить объект параметра MODULE.pfx, являющийся "%MODULE.prefix;:", если префиксирование запущено, и ""  -  если не запущено.
  5. Определить объект параметра MODULE.xmlns.extra.attrib, содержащий объявление любых атрибутов ПИ XML для ПИмён, на которые ссылается данный модуль (напр., xmlns:xlink).
    Если %MODULE.prefixed установлен в INCLUDE, этот атрибут должен включать также объявление xmlns:%MODULE.prefix;.
  6. Определить объект параметра XHTML.xmlns.extra.attrib как MODULE.xmlns.extra.attrib. Обычно это переопределяется файлом драйвера типа документа, но если это не так, то данное определение принимается как определение по умолчанию.
  7. Для каждого элемента, определённого модулем, создать объект параметра в форме "MODULE.NAME.qname", в котором будет содержаться квалифицированное имя. Значение этого объекта параметра обязано быть "%MODULE.pfx;NAME". Таким образом, разобранное значение будет "PREFIX:NAME", если префиксирование запущено, и "NAME" - в противном случае.

    Если модуль добавляет атрибуты к элементам, определённым в модуле, не разделяющем (share) ПИ данного модуля, объявите эти атрибуты так, чтобы они использовали префикс %MODULE.pfx. Например:

    <ENTITY % MODULE.img.myattr.qname "%MODULE.pfx;myattr" >
    

Пример подмодуля qname для гипотетического Inventory Module приведён ниже:

<!-- ...................................................................... -->
<!-- Inventory Qname Module ................................................... -->
<!-- file: inventory-qname-1.mod

     PUBLIC "-//MY COMPANY//ELEMENTS XHTML Inventory Qnames 1.0//EN"
     SYSTEM "http://www.example.com/DTDs/inventory-qname-1.mod"

     xmlns:inventory="http://www.example.com/xmlns/inventory"
     ...................................................................... -->

<!-- Объявляется значение по умолчанию для префиксирования элементов этого модуля -->
<!-- Заметьте, штаа NS.prefixed будет переопределён в XHTML Framework или
     объектом документа. -->
<!ENTITY % NS.prefixed "IGNORE" >
<!ENTITY % Inventory.prefixed "%NS.prefixed;" >

<!-- Объявляется действующее ПИ данного модуля -->
<!ENTITY % Inventory.xmlns "http://www.example.com/xmlns/inventory" >

<!-- Объявляется префикс по умолчанию для данного модуля -->
<!ENTITY % Inventory.prefix "inventory" >

<!-- Объявляется префикс для данного модуля -->
<![%Inventory.prefixed;[
<!ENTITY % Inventory.pfx "%Inventory.prefix;:" >
]]>
<!ENTITY % Inventory.pfx "" >

<!-- Объявляется атрибут ПИ xml для данного модуля -->
<![%Inventory.prefixed;[
<!ENTITY % Inventory.xmlns.extra.attrib
    "xmlns:%Inventory.prefix;   %URI.datatype;  #FIXED  '%Inventory.xmlns;'" >
]]>
<!ENTITY % Inventory.xmlns.extra.attrib "" >

<!-- Объявляется дополнительное ПИ. которое должно быть включено в элементы XHTML -->
<!ENTITY % XHTML.xmlns.extra.attrib
    %Inventory.xmlns.extra.attrib; >

<!-- Теперь определяются квалифицированные имена для всех элементов модуля -->
<!ENTITY % Inventory.shelf.qname "%Inventory.pfx;shelf" >
<!ENTITY % Inventory.item.qname "%Inventory.pfx;item" >
<!ENTITY % Inventory.desc.qname "%Inventory.pfx;desc" >
<!ENTITY % Inventory.sku.qname "%Inventory.pfx;sku" >
<!ENTITY % Inventory.price.qname "%Inventory.pfx;price" >

D.2.2. Подмодуль(и) объявлений

Далее вам необходимо определить один или более "подмодулей объявлений". Задачей этих файловых объектов является объявление элементов ОТД XML и списков атрибутов. Модуль объявлений XHTML должен конструироваться следующим образом:

  1. Определить объект параметра для использования с ATTLIST каждого объявленного элемента. Этот объект параметра должен содержать %NS.decl.attrib;, если %MODULE.prefixed; установлен в INCLUDE, и %NS.decl.attrib; плюс "xmlns %URI.datatype; #FIXED '%MODULE.xmlns;'", если %MODULE.prefixed; установлен в IGNORE.
  2. Объявить все элементы и атрибуты модуля. В каждый ATTLIST элемента включить объект параметра, определённый выше, так, чтобы все необходимые атрибуты xmlns были доступны каждому элементу модуля.
  3. Если модуль добавляет атрибуты к тем элементам, определённым в модуле, которые не разделяют пространство имён этого модуля, объявить эти атрибуты так, чтобы они использовали префикс %MODULE.pfx. Например:

    <ENTITY % MODULE.img.myattr.qname "%MODULE.pfx;myattr" >
    <!ATTLIST %img.qname;
          %MODULE.img.myattr.qname;    CDATA          #IMPLIED
    >

    Здесь должен быть добавлен атрибут к элементу img модуля Image, но имя атрибута будет квалифицированным именем, включая префикс, если префиксы выбраны для объекта документа.
    Добавляется также атрибут xmlns:MODULE_PREFIX к списку атрибутов элемента img, так что разборщик, понимающий пространство имён XML, будет "знать", как разбирать пространство имён на безе его (ПИ) префиксов.

В следующем примере показано объявление подмодуля для гипотетического модуля Inventory:

<!-- ...................................................................... -->
<!-- Inventory Elements Module ................................................... -->
<!-- file: inventory-1.mod

     PUBLIC "-//MY COMPANY//ELEMENTS XHTML Inventory Elements 1.0//EN"
     SYSTEM "http://www.example.com/DTDs/inventory-1.mod"

     xmlns:inventory="http://www.example.com/xmlns/inventory"
     ...................................................................... -->

<!-- Inventory Module

     shelf
        item
       sku
       desc
       price

     Этот модуль определяет простую структуру инвентаризации
-->

<!-- Определяет атрибуты глобального ПИ -->
<![%Inventory.prefixed;[
<!ENTITY % Inventory.xmlns.attrib
    "%NS.decl.attrib;"
>
]]>
<!ENTITY % Inventory.xmlns.attrib
     "xmlns %URI.datatype;  #FIXED '%Inventory.xmlns;'"
>

<!-- Определяет обычный набор атрибутов для всех элементов модуля -->
<!ENTITY % Inventory.Common.attrib
         "%Inventory.xmlns.attrib;
      id               ID                   #IMPLIED
>

<!-- Определяет элементы и атрибуты модуля -->
<!ELEMENT %Inventory.shelf.qname;
     ( %Inventory.item.qname; )* >
<!ATTLIST %Inventory.shelf.qname;
     location   CDATA   #IMPLIED
     %Inventory.Common.attrib;
>
<!ELEMENT %Inventory.item.qname;
     ( %Inventory.desc.qname;, %Inventory.sku.qname;, %Inventory.price.qname;) >
<!ATTLIST %Inventory.item.qname;
     location   CDATA   #IMPLIED
     %Inventory.Common.attrib;
>

<!ELEMENT %Inventory.desc.qname; ( #PCDATA ) >
<!ATTLIST %Inventory.desc.qname;
     %Inventory.Common.attrib;
>

<!ELEMENT %Inventory.sku.qname; ( #PCDATA ) >
<!ATTLIST %Inventory.sku.qname;
     %Inventory.Common.attrib;
>

<!ELEMENT %Inventory.price.qname; ( #PCDATA ) >
<!ATTLIST %Inventory.price.qname;
     %Inventory.Common.attrib;
>

<!-- end of inventory-1.mod -->

D.2.3. Использование модуля как отдельного (stand-alone) ОТД

Иногда необходимо, чтобы модуль XHTML использовался также в качестве отдельного ОТД (Определения Типа Документа). Хорошим примером может служить вышеприведённый модуль Inventory. Его объекты должны быть внедряемы в документ XHTML и доступны как отдельные самостоятельные документы, извлечённые из базы данных (к примеру). Проще всего сделать это путём определения файла ОТД, который устанавливает компоненты Вашего модуля.
Подобное ОТД могло бы иметь такую структуру:

  1. Включить модуль XHTML Datatypes (Ваш модуль qnames скорее всего использует некоторые из этих типов данных - он обычно использует тип данных URI для атрибута xmlns).
  2. Включить модуль Qnames для Вашего модуля.
  3. Определить объект параметра NS.decl.attrib как %MODULE.xmlns.extra.attrib;.
  4. Включить модуль(и) Declaration для Вашего модуля.

Пример этого для нашего модуля Inventory приведён здесь:

<!-- ...................................................................... -->
<!-- Inventory Elements DTD ............................................... -->
<!-- file: inventory-1.dtd

     PUBLIC "-//MY COMPANY//DTD XHTML Inventory 1.0//EN"
     SYSTEM "http://www.example.com/DTDs/inventory-1.dtd"

     xmlns:inventory="http://www.example.com/xmlns/inventory"
     ...................................................................... -->

<!-- Inventory Module

     shelf
        item
       sku
       desc
       price

     Этот модуль определяет простую структуру инвентаризации
-->

<!-- Вставляет типы данных -->
<!ENTITY % xhtml-datatypes.mod
         PUBLIC "-//W3C//ENTITIES XHTML Datatypes 1.0//EN"
         "http://www.w3.org/TR/xhtml-modularization/DTD/xhtml-datatypes-1.mod" >
%xhtml-datatypes.mod;

<!-- Вставляет квалифицированные имена -->
<!ENTITY % Inventory-qname.mod SYSTEM "inventory-qname-1.mod" >
%Inventory-qname.mod;

<!ENTITY % NS.decl.attrib "%Inventory.xmlns.extra.attrib;">

<!ENTITY % Inventory.mod SYSTEM "inventory-1.mod" >
%Inventory.mod;

<!-- end of inventory-1.dtd -->

На это ОТД могут затем ссылаться документы, которые используют только элементы из Вашего модуля:

<!DOCTYPE shelf SYSTEM "inventory-1.dtd">
<shelf xmlns="http://www.example.com/xmlns/inventory">
    <item>
        <desc>
      this is a description.
    </desc>
        <sku>
      this is the price.
        </sku>
        <price>
      this is the price.
    </price>
    </item>
</shelf>

Этот метод допускает определение элементов и атрибутов, находящихся в своём собственном пространстве имён. Он позволяет также разработчикам содержимого использовать префикс по умолчанию для элементов и атрибутов:

<!DOCTYPE inventory:shelf SYSTEM "inventory-1.dtd" [
    <!ENTITY % Inventory.prefixed "INCLUDE">
]>
<inventory:shelf xmlns:inventory="http://www.example.com/xmlns/inventory">
    <inventory:item>
        <inventory:desc>
          this is a description.
        </inventory:desc>
        <inventory:sku>
          this is the sku.
        </inventory:sku>
        <inventory:price>
          this is the price.
        </inventory:price>
    </inventory:item>
</inventory:shelf>

Наконец, объект документа может использовать другой префикс пространства имён XML путём переобъявления его с внутренними поднаборами в шапке DOCTYPE:

<!DOCTYPE i:shelf SYSTEM "inventory-1.dtd" [
    <!ENTITY % Inventory.prefixed "INCLUDE">
    <!ENTITY % Inventory.prefix "i">
]>
<i:shelf xmlns:i="http://www.example.com/xmlns/inventory">
    <i:item>
        <i:desc>
          this is a description.
        </i:desc>
        <i:sku>
          this is the price.
        </i:sku>
        <i:price>
          this is the price.
        </i:price>
    </i:item>
</i:shelf>

D.2.4. Идиосинкразии пространства имён

В то время как определённый здесь подход допускает определение языков разметки, соответствующих ПИ XML и XML, некоторые возможности, определённые спецификацией ПИ XML, не поддерживаются:

  1. Пространство имён XML разрешает переобъявление атрибута xmlns для ПИ в любой точке дерева, а также разрешает при переобъявлении переключение между использованием ПИ по умолчанию и с префиксами и изменение префикса.
    Метод, определённый в данном документе, этого не допускает. По всему объекту документа данное ПИ обязано использовать один и тот же префикс ПИ (если префиксирование используется) или обязано использоваться в области видимости по умолчанию.

  2. При использовании значений по умолчанию ПИ XML верным будет основываться на ОТД документа для того, чтобы информировать разборщики о ПИ элементов. Однако, поскольку от процессоров, умеющих обрабатывать ПИ, не требуется включать ОТД при обсчёте документа, разработчики содержимого должны объявлять ПИ XML для элемента в тех случаях, когда ПИ изменяется:

    ...
    <p>
       <myelement xmlns="..." />
    </p>
    

Hosted by uCoz