Где в этом коде определена функция формы submit ()? - PullRequest
0 голосов
/ 25 марта 2011

Я учусь на уже созданных веб-страницах (php, javascript и на smarty) и обещаю, что изо всех сил пытаюсь понять этот код, но мой разум просто не может, я не понимаю, как он работает, у меня естьчитать и читать, но я до сих пор не понимаю.Следующий код работает отлично, но я не знаю как.Речь идет о контактной форме.Это оригинальная php-страница:

<?php
include("includes/globals.php");
include("includes/smarty/Smarty.class.php"); 
$vista = new Smarty();
$vista->display('contacto.tpl');
?>

Как вы видите, она просто отображает contacto.tpl, который (я поставлю только интересные части):

<link href="{$smarty.const.__SERVER_URL__}css/estilo.css" rel="stylesheet" type="text/css" />
<link href="../css/estilo.css" rel="stylesheet" type="text/css" />
<link href="../css/coeco.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="{$smarty.const.__SERVER_URL__}scripts/jquery.js"></script>

{literal}
<script>
    function validar()
    {
    $('#formContacto').submit();
}
</script>
{/literal}
</head>
<body>
  <form id="formContacto" action="/contacto-enviado.html" method="post">
    <table class="formulario_contacto" cellspacing="0" cellpadding="0">
      <tr>
        <td width="228" height="17">NOMBRE</td>
        <td width="110" height="17">TEL&Eacute;FONO</td>
        <td height="17">E-MAIL</td>
      </tr>
      <tr>
        <td><input class="campo_texto" name="nombre" id="nombre" type="text" /></td>
        <td><input class="campo_texto2" name="telefono" type="text" /></td>
        <td><input class="campo_texto" name="email" id="email" type="text" /></td>
      </tr>
    </table>
    <table class="formulario_contacto" cellspacing="0" cellpadding="0">
      <tr>
        <td height="17">SU MENSAJE</td>
      </tr>
      <tr>
        <td><textarea class="texto_contacto" name="detalles" rows=5></textarea>
          <div align="right"><a class="btn_formulario_contacto2" href="#" onclick="validar()">enviar</a></div></td>
      </tr>
    </table>
  </form>
  {include file="foot.tpl"} </div>
</body>
</html>

ИтакХорошо, хорошо, хорошо, он получает данные из формы и отправляет их с помощью функции submit (), но где определена функция submit ()?Я имею в виду, да, я прочитал http://api.jquery.com/submit/ и это своего рода триггер, но он должен быть где-то определен, верно?где?как это возможно, что этот код работает?Спасибо!Извините, я знаю, что я так неуверенен.

Ответы [ 4 ]

1 голос
/ 12 декабря 2018

это ты в будущем, 7 лет спустя.

Никто не ответил на ваш вопрос должным образом. Так что я сделаю все возможное.

A <form> - это объект HTML с некоторыми особыми свойствами, которые отличают его от других элементов HTML, точно так же, как <button> или ссылка <a> имеют специальные свойства, которые отличают их от других.

В частности, <form> позволяет отправлять информацию на сервер. Информация отправляется через HTTP-запрос, используемый метод определяется в свойстве method (* GET или POST), а URL-адрес, на который отправляется запрос, указывается в свойстве action.

Способ работы <form> регулируется и задается так же, как и любые другие объекты HTML, через стандарт. Официальным органом, отвечающим за это, является W3C, вот спецификация для форм: https://www.w3.org/TR/html52/sec-forms.html

Спецификация затем свободно реализуется браузерами, поэтому специфика «где» определяется поведением внутри кишки ядра браузера. Например, вы можете найти реализацию, если посмотрите достаточно глубоко в Chromium Project, который является ядром, на котором основан Chrome. Однако, зная спецификации, более чем достаточно для работы с ним.

Возвращаясь к вашему конкретному примеру:

Эта форма создаст и отправит POST-запрос со страницы клиента, где эта форма появляется с вводом информации в форму по соответствующему URL-адресу /contacto-enviado.html

Дальнейшее чтение

Для хорошего объяснения того, как в целом работает, проверьте: https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data

1 голос
/ 25 марта 2011

Функция отправки, которую использует jQuery, находится внутри самого кода jQuery. Вы используете шаблонизатор 'smarty', чтобы включить jQuery на свою страницу с этой строкой

<script type="text/javascript" src="{$smarty.const.__SERVER_URL__}scripts/jquery.js"></script>

После того, как вы это сделали, у вас теперь есть доступ ко всем замечательным возможностям jQuery, таким как submit() функция отправки формы. Версия jQuery помогает сделать вашу работу в браузере. Если вы хотите узнать больше о функции отправки, посмотрите здесь .

1 голос
/ 25 марта 2011

Метод submit () определен в элементе DOM формы. jQuery просто вызывает этот метод, чтобы отправить форму на странице.

0 голосов
/ 25 марта 2011

Как вы сказали, submit является триггером для события onSubmit. Поэтому, когда она вызывается, она просто вызывает форму, которая вызывает это событие в форме ... по умолчанию она делает то же самое, что и нажатие на ввод submit внутри формы.

...