Проблема с несколькими формами на одной странице - PullRequest
1 голос
/ 30 марта 2010

У меня есть две формы на веб-странице.

Первая форма не является действительной, поскольку это сайт на основе .NET. Поэтому вместо этого у меня есть стандартные поля ввода, а также asp: Button PostBackURL = "http: / www ...". Одним из полей является «электронная почта». Это отлично работает.

Затем у меня есть XSLT-файл с другой формой, и я использую Javascript (через this.form.action, .method и т. Д.) Для публикации этой формы. Кроме того, он имеет те же поля, что и форма выше.

Проблема в том, что когда кто-то отправляет вторую форму, скрипт в PostBackURL возвращает ошибку, потому что поле «email» кажется пустым. Таким образом, кажется, что форма отправляет поле "email" из верхней формы вместо текущей.

Я подумал, что, возможно, отправляется неправильная форма, но если я удаляю поле "электронная почта" из верхней формы, а затем отправляю нижнюю, она работает нормально.

Есть идеи, как это исправить? Спасибо.

Ответы [ 4 ]

1 голос
/ 30 марта 2010

Не видя структуру страницы, это может быть отключено (если так, прошу прощения):

Как правило, говоря, ФОРМА, которой вы управляете с помощью Javascript (submit), должна находиться вне "основной" формы на стороне сервера asp.net.

Так что конструктивно:

<html>
<body>
   <form id="the_asp_net_server_side_form" runat="server">       
    ....asp.net controls, content, etc.....
    ....this section is the server-side asp.net form.....
   </form>

   <form id="standard_html_form1" action="blah">
        ....standard html <input> fields
        ....do whatever you want with javascript
        ....if you need to use "old school/legacy" asp style <%= %> code, do so
   </form>

   <form id="standard_html_form2" action="blah">
        ....standard html <input> fields
        ....do whatever you want with javascript
        ....if you need to use "old school/legacy" asp style <%= %> code, do so
   </form>
</body>
</html>

Это, конечно, предполагает, что вам нужно POST-данные вне вашего приложения ASP.net (к некоторому внешнему URL) ....

0 голосов
/ 31 марта 2010

Я бы проверил HTML, просмотрев источник, но вероятный виновник в том, что вы не можете иметь вложенные формы в HTML. Если вы вкладываете форму в HTML, внутренняя форма игнорируется, а внешняя форма отправляется.

<form id="outer" onsubmit="alert('outer');return false;">
    <form id="inner" onsubmit="alert('inner');return false;">
        <input type="submit" value="Go" />
    </form>
</form>

Вы можете продемонстрировать это поведение здесь: http://jsfiddle.net/eRZQD/.

Учитывая это, вы, вероятно, пытаетесь отправить внутреннюю форму, но внешняя форма фактически отправляется, которая включает в себя пустое поле электронной почты, которое вызывает вашу ошибку. Вы определенно захотите удалить вложенность или переработать HTML-код таким образом, чтобы внутренняя кнопка отправки выполняла что-то немного отличное от внешней кнопки отправки.

0 голосов
/ 30 марта 2010

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

Это не решает проблему, но должно сработать.

0 голосов
/ 30 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...