метод точного действия вызова с вложенным html.beginform () [duplicate]

Всякий раз, когда вы пытаетесь сравнить строки, сравните их по отношению к каждому символу. Для этого вы можете использовать встроенную строковую функцию strcmp (input1, input2); и вы должны использовать заголовочный файл с именем #include<string.h>

Попробуйте этот код:

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h>  

int main() 
{ 
    char s[]="STACKOVERFLOW";
    char s1[200];
    printf("Enter the string to be checked\n");//enter the input string
    scanf("%s",s1);
    if(strcmp(s,s1)==0)//compare both the strings  
    {
        printf("Both the Strings match\n"); 
    } 
    else
    {
        printf("Entered String does not match\n");  
    } 
    system("pause");  
} 
388
задан Mark Garcia 22 October 2014 в 07:48
поделиться

19 ответов

Одним словом, нет. Вы можете иметь несколько форм на странице, но они не должны быть вложенными.

Из рабочей страницы html5 :

4.10.3 form element

Модель контента:

Содержимое потока, но без потомков элемента формы.

401
ответ дан mb21 22 August 2018 в 17:13
поделиться
  • 1
    и если вы попробуете это в asp.net, это не так просто ... – annakata 19 December 2008 в 00:06
  • 2
    Я согласен с ответом, но спросить другого, почему бы и нет? Почему HTML не разрешает вложенные формы? Для меня это, по-видимому, ограничение, с которым нам было бы лучше. Существует много примеров, когда использование вложенных форм было бы легче запрограммировать (т. Е. Использовать загрузочную фотографию с формой редактирования профиля). – Ryan 6 April 2013 в 02:32
  • 3
    @ Нилзор, он не спрашивает, не может ли это быть сделано, он спрашивает, ПОЧЕМУ нет. Согласен; формы вложенности на самом деле действительно полезны. Поэтому, если у вас есть одностраничное приложение с вкладками, каждая вкладка представляет собой свою собственную форму (поэтому вы можете отправить ее для сохранения прогресса), и все они завернуты в форму, которую вы можете отправить, чтобы сохранить все. Имеет смысл для меня. – Robert Grant 24 December 2013 в 08:45
  • 4
    Я согласен с тем, что говорили другие. Это ограничение кажется произвольным и вредным. – aroth 7 July 2014 в 07:43
  • 5
    Поэтому нам нужен HTML 5.1 с вложенными формами. – hosein 22 June 2016 в 10:33

Вы также можете использовать formaction = "" внутри тега кнопки.

<button type="submit" formaction="/rmDog" method='post' id="rmDog">-</button>

Это было бы вложено в исходную форму как отдельная кнопка.

0
ответ дан Chief Buddy 22 August 2018 в 17:13
поделиться

Я столкнулся с подобной проблемой, и я знаю, что это не ответ на вопрос, но он может помочь кому-то с такой проблемой: если необходимо поместить элементы двух или более форм в данная последовательность, атрибут HTML5 <input> form может быть решением. Из http://www.w3schools.com/tags/att_input_form.asp :

  1. Атрибут формы является новым в HTML5.
  2. Определяет, к какому элементу <form> принадлежит элемент <input>. Значение этого атрибута должно быть атрибутом id элемента <form> в том же документе.

Сценарий:

  • input_Form1_n1
  • input_Form2_n1
  • input_Form1_n2
  • input_Form2_n2

Реализация:

<form id="Form1" action="Action1.php" method="post"></form>
<form id="Form2" action="Action2.php" method="post"></form>

<input type="text" name="input_Form1_n1" form="Form1" />
<input type="text" name="input_Form2_n1" form="Form2" />
<input type="text" name="input_Form1_n2" form="Form1" />
<input type="text" name="input_Form2_n2" form="Form2" />

<input type="submit" name="button1" value="buttonVal1" form="Form1" />
<input type="submit" name="button2" value="buttonVal2" form="Form2" />

Здесь вы найдете совместимость браузера.

43
ответ дан Cliff Burton 22 August 2018 в 17:13
поделиться
  • 1
    По состоянию на июнь 2017 года в Edge это тоже не работает. – TheFrost 13 June 2017 в 05:15
  • 2
    Спасибо, что указали @TheFrost, добавили в ответ – Cliff Burton 14 June 2017 в 10:48
  • 3
    По состоянию на октябрь 2017 года это работает в Edge – My name is jeff 9 October 2017 в 09:18
  • 4
    он отлично работает! должны быть включены в принятый ответ – Nahouto 31 January 2018 в 15:49
  • 5
    Чтобы указать таблицу поддержки браузера: caniuse.com/#feat=form-attribute Возобновление - это работает повсюду (Chrome, Firefox, Opera, Egde, Safari, браузер Android ...), кроме IE (включая последние версии v11). – dmikam 27 July 2018 в 10:57

Сегодня я также застрял в одной и той же проблеме и решил проблему, я добавил пользовательский элемент управления, и на этом элементе управления я использую этот код

<div class="divformTagEx">

</div>

<asp:Literal runat="server" ID="litFormTag" Visible="false">
'<div> <form  style="margin-bottom: 3;" action="http://login.php" method="post" name="testformtag"></form> </div>'</asp:Literal>

и в событии PreRenderComplete для вызова страницы this метод

private void InitializeJavaScript()
{
        var script = new StringBuilder();
        script.Append("$(document).ready(function () {");
        script.Append("$('.divformTagEx').append( ");
        script.Append(litFormTag.Text);
        script.Append(" )");
        script.Append(" });");
        ScriptManager.RegisterStartupScript(this, GetType(), "nestedFormTagEx", script.ToString(), true);
    }

Я считаю, что это поможет.

0
ответ дан doppelgreener 22 August 2018 в 17:13
поделиться

Простым обходным путем является использование iframe для хранения «вложенной» формы. Визуально форма вложенная, но со стороны кода ее в отдельный html-файл вообще.

4
ответ дан Ezion 22 August 2018 в 17:13
поделиться

Использовать пустой тег формы перед вашей вложенной формой

Протестировано и работает в Firefox, Chrome

Не проверено на I.E.

<form name="mainForm" action="mainAction">
  <form></form>
  <form name="subForm"  action="subAction">
  </form>
</form>
1
ответ дан Fatih 22 August 2018 в 17:13
поделиться
  • 1
    когда я попробовал это на chrome, он выводит это & ​​lt; form name = & quot; mainForm & quot; & gt; & gt; & Lt; / форма & GT; & lt; form name = "subForm" & gt; & gt; & gt; & Lt; / форма & GT; – ianace 10 September 2015 в 22:11
  • 2
    Вы пробовали с кнопкой отправки. Я использую этот метод много раз и всегда работал. – Fatih 30 September 2015 в 08:04
  • 3
    Это является нарушением спецификации, и использование этого - попрошайничество для будущих проблем. – Oskar Berggren 28 January 2016 в 15:45
  • 4
    Новые версии webkit просто удаляют вложенные элементы формы. – woens 3 August 2018 в 09:49

Обычный html не позволяет вам это делать. Но с javascript вы сможете это сделать. Если вы используете javascript / jquery, вы можете классифицировать элементы формы с классом, а затем использовать serialize () для сериализации только тех элементов формы для подмножества элементов, которые вы хотите отправить.

<form id="formid">
    <input type="text" class="class1" />
    <input type="text" class="class2">
</form>

Тогда в вашем javascript вы можете сделать это, чтобы сериализовать элементы класса1

$(".class1").serialize();

Для класса2 вы могли бы сделать

$(".class2").serialize();

Для всей формы

$("#formid").serialize();

или просто

$("#formid").submit();
40
ответ дан HSchmale 22 August 2018 в 17:13
поделиться

Как сказал Крэйг, нет.

Но в отношении вашего комментария относительно , почему :

Возможно, было бы проще использовать 1 <form> с входы и кнопку «Обновить», а также использовать скрытые вставки с кнопкой «Отправить заказ» в другой <form>.

11
ответ дан Jonathan Lonowski 22 August 2018 в 17:13
поделиться
  • 1
    Я сделал свою страницу с телеграммой таким образом, он просто пошел по-другому и не хотел ее менять. Я не был положительным, если его метод был все, что действительно. – Levi 19 December 2008 в 00:05

Обратите внимание: вам не разрешено вставлять элементы FORM!

http://www.w3.org/MarkUp/html3/forms.html

https://www.w3.org/TR/html4/appendix/changes.html#hA.3.9 (примечания спецификации html4 нет изменений относительно форм вложения от 3.2 до 4)

https://www.w3.org/TR/html4/appendix/changes.html#hA.1.1.12 (примечания спецификации html4 нет изменений в формах вложения от 4.0 до 4.1)

https://www.w3.org/TR/html5-diff/ (примечания спецификации html5 не изменяются в отношении форм вложенности от 4 до 5)

https://www.w3.org/TR/html5/forms.html#association-of-controls-and-forms комментарии к «Эта функция позволяет авторам работать отсутствие поддержки вложенных элементов формы. », но не цитирует, где это указано, я думаю, что они предполагают, что мы должны предположить, что он указан в спецификации html3:)

8
ответ дан Mark Peterson 22 August 2018 в 17:13
поделиться
  • 1
    Я понятия не имею, почему вы отправляете сообщение на вопрос, на который ответили 3 с половиной года, но более проблематичным является ссылка на HTML3, которая не была рекомендацией в течение длительного времени. – Aidiakapi 24 December 2013 в 15:16
  • 2
    Это ссылка на то, как долго отвечал основной вопрос, который я считал конструктивным. Также я обнаружил, что без такта «Обратите внимание, что вам не разрешено вставлять элементы FORM!» в спецификации, чтобы быть юмористическим. – Mark Peterson 13 February 2014 в 22:03
  • 3
    Это проблема, потому что мне нужно вставить API, который является формой, и потому что приложение .net (которое обертывает тег & lt; form & gt; вокруг всего). Как вы преодолеваете эту проблему. – jelly46 27 March 2014 в 18:53

Даже если вы можете заставить его работать в одном браузере, нет никакой гарантии, что он будет работать одинаково во всех браузерах. Поэтому, хотя вы можете заставить его работать с некоторыми времени, вы, конечно, не сможете заставить его работать все времени.

2
ответ дан Mike Hofer 22 August 2018 в 17:13
поделиться

Пока я не предлагаю решение вложенных форм (это не работает надежно), я предоставляю обходной путь, который работает для меня:

Сценарий использования: суперформа, позволяющая изменять N элементов однажды. Он имеет кнопку «Отправить все» внизу. Каждый элемент хочет иметь свою собственную вложенную форму с кнопкой «Отправить элемент № N». Но не может ...

В этом случае можно фактически использовать одну форму, а затем иметь имя кнопок submit_1 .. submit_N и submitAll и обрабатывать их на стороне сервера, только глядя на параметры, оканчивающиеся на _1, если имя кнопки было submit_1.

<form>
    <div id="item1">
        <input type="text" name="foo_1" value="23">
        <input type="submit" name="submit_1" value="Submit Item #1">
    </div>
    <div id="item2">
        <input type="text" name="foo_2" value="33">
        <input type="submit" name="submit_2" value="Submit Item #2">
    </div>
    <input type="submit" name="submitAll" value="Submit All Items">
</form>

Хорошо, поэтому не так много, но это делает работу.

1
ответ дан Peter V. Mørch 22 August 2018 в 17:13
поделиться

Другой способ обойти эту проблему, если вы используете язык сценариев на стороне сервера, который позволяет вам манипулировать опубликованными данными, заключается в том, чтобы объявить вашу форму html следующим образом:

<form>
<input name="a_name"/>
<input name="a_second_name"/>
<input name="subform[another_name]"/>
<input name="subform[another_second_name]"/>
</form>

Если вы напечатайте опубликованные данные (я буду использовать PHP здесь), вы получите такой массив:

//print_r($_POST) will output :
    array(
    'a_name' => 'a_name_value',
    'a_second_name' => 'a_second_name_value',
    'subform' => array(
      'another_name' => 'a_name_value',
      'another_second_name' => 'another_second_name_value',
      ),
    );

Тогда вы можете просто сделать что-то вроде:

$my_sub_form_data = $_POST['subform'];
unset($_POST['subform']);

Your $ _POST теперь имеет только ваши данные «основной формы», а ваши данные подформы хранятся в другой переменной, которую вы можете манипулировать по желанию.

Надеюсь, что это поможет!

10
ответ дан Pierre 22 August 2018 в 17:13
поделиться

Если вы используете AngularJS, все теги <form> внутри вашего ng-app заменяются во время выполнения с помощью директив ngForm, которые предназначены для вложенности.

В угловых формах быть вложенным. Это означает, что внешняя форма действительна, когда все дочерние формы также действительны. Однако браузеры не допускают вложенности элементов <form>, поэтому Angular предоставляет директиву ngForm, которая ведет себя одинаково с <form>, но может быть вложенной. Это позволяет вам иметь вложенные формы, что очень полезно при использовании угловых директив проверки в формах, которые динамически генерируются с помощью директивы ngRepeat. ( источник )

27
ответ дан roufamatic 22 August 2018 в 17:13
поделиться
  • 1
    угловой сохраняет день jsfiddle.net/gikoo/qNrFX – ColacX 18 May 2015 в 09:40
  • 2
    Это был ответ, который я искал :) И да, имеет смысл вложить форму, потому что если у вас есть несколько вкладок, но вы хотите выполнить проверку только на одной вкладке, то с вложенной формой вы можете это сделать. – NeverGiveUp161 27 March 2018 в 20:48

У вас даже возникнут проблемы с работой в разных версиях одного и того же браузера. Поэтому не используйте это.

2
ответ дан Taryn 22 August 2018 в 17:13
поделиться

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

. Но это все, что угодно, возможно, захочет увидеть это

, где вы (я называю это взломом, так как я уверен, что это не является законным) html, чтобы браузер имел вложенную форму

<form id="form_one" action="http://apple.com">
  <div>
    <div>
        <form id="form_two" action="/">
            <!-- DUMMY FORM TO ALLOW BROWSER TO ACCEPT NESTED FORM -->
      </form>
    </div>
      <br/>
    <div>
      <form id="form_three" action="http://www.linuxtopia.org/">
          <input type='submit' value='LINUX TOPIA'/>
      </form>
    </div>
      <br/>

    <div>
      <form id="form_four" action="http://bing.com">
          <input type='submit' value='BING'/>
      </form>
    </div>
      <br/>  
    <input type='submit' value='Apple'/>
  </div>  
</form>

JS FIDDLE LINK

http://jsfiddle.net/nzkEw/10/

0
ответ дан Viren 22 August 2018 в 17:13
поделиться

Вторая форма будет проигнорирована, см. фрагмент из WebKit, например:

bool HTMLParser::formCreateErrorCheck(Token* t, RefPtr<Node>& result)
{
    // Only create a new form if we're not already inside one.
    // This is consistent with other browsers' behavior.
    if (!m_currentFormElement) {
        m_currentFormElement = new HTMLFormElement(formTag, m_document);
        result = m_currentFormElement;
        pCloserCreateErrorCheck(t, result);
    }
    return false;
}
83
ответ дан Vitalii Fedorenko 22 August 2018 в 17:13
поделиться

О формах вложенности: я потратил 10 лет на один день, пытаясь отладить сценарий ajax.

мой предыдущий ответ / пример не учитывал разметку html, извините.

<form id='form_1' et al>
  <input stuff>
  <submit onClick='ajaxFunction(That_Puts_form_2_In_The_ajaxContainer)' >
  <td id='ajaxContainer></td>
</form>

form_2 постоянно пропадал, говоря недействительный form_2.

Когда я переместил ajaxContainer, который создал form_2 <i>outside</i> формы_1, я снова был в бизнесе. Это ответ на вопрос, почему можно вложить формы. Я имею в виду, действительно, каков идентификатор, если бы не определить, какая форма должна использоваться? Должна быть лучшая, гладкая работа.

1
ответ дан Wh1T3h4Ck5 22 August 2018 в 17:13
поделиться
-1
ответ дан Roger Krueger 5 November 2018 в 14:44
поделиться
-1
ответ дан Shree Sthapit 5 November 2018 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: