2012-01-29 2 views
6
<form action="here.php" method="POST"> 
<input type="text" name="text"> 

<div id="one"> 
    <input type="hidden" name="aaa" value="one"> 
    <input type="submit" value="Send"> 
</div> 

<div id="two"> 
    <input type="hidden" name="aaa" value="two"> 
    <input type="submit" value="Send"> 
</div> 

</form> 

Теперь, если я нажимаю на посыле ДИВА ONE или DIV ДВА я всегда в $ _POST [ «ааа»] = «два»;Форма с двумя кнопками подают с различными значениями

Возможно ли сделать одну форму с двумя представлениями с различными значениями?

Если я нажимаю на сНе один представить я хотел reveice $ _POST [ «ааа»] = «один» и если я нажимаю на DIV два Представлять я хотел бы получить $ _POST [ «ааа»] = ' два '.

Как я могу это сделать?

Я могу использовать для этого PHP и jQuery.

EDIT: Я не хочу создать две формы - я не хочу показывать два много раз <input type="text" name="text">

EDIT: может быть, я могу вместо кнопки отправить? но как?

+0

просто сделать две формы. – c69

ответ

11

кажется, что вы на самом деле хотите сделать, это иметь значение в каждой из кнопок см this, например:

<form action="demo_form.asp" method="get"> 
    Choose your favorite subject: 
    <button name="subject" type="submit" value="fav_HTML">HTML</button> 
    <button name="subject" type="submit" value="fav_CSS">CSS</button> 
</form> 
+4

Обычно рекомендуется включить ответ вместо ссылки, если ссылка больше не работает (например, для меня прямо сейчас). –

4

Вы должны были бы две различные формы:

<div id="one"> 
    <form ...> 
     <input type="hidden" name="aaa" value="one"> 
     <input type="submit" value="Send"> 
    </form> 
</div> 

<div id="two"> 
    <form ...> 
     <input ...> 
     <input ...> 
    </form> 
</div> 

Стандартная практика такова, что, когда два поля имеют один и тот же name, чтобы использовать только последнее значение встречается в форме и представить, что.

PHP имеет специальную нотацию (name="aaa[]"), чтобы разрешить отправку нескольких значений с тем же именем, но это не поможет вам здесь, так как это должно было бы передать ВСЕ значения aaa, а не только самые близкие на кнопку отправки.


HTML форма:

<form ...> 
<input type="text" name="textfield"> 

<div id="one"> 
    <input type="hidden" name="one_data" value="aaa" /> 
    <input type="submit" name="submit_one" value="Submit" /> 
</div> 

<div id="two"> 
    <input type="hidden" name="two_data" value="bbb" /> 
    <input type="submit" name="submit_two" value="Submit" /> 
</div> 
</form> 

стороне сервера:

if (isset($_POST['submit_two'])) { 
    $data = $_POST['two_data']; 
} else if (isset($_POST['submit_one'])) { 
    $data = $_POST['one_data']; 
} else { 
    die("Invalid submission"); 
} 
+0

это нормально, но я не хочу показывать два раза на моей странице

+0

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

+0

спасибо, но я не знаю, как это сделать –

3

Вместо того чтобы показывать две кнопки отправки, вы можете показать список радио с двумя вариантами и одна кнопка отправки.

3

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

в HTML-

<input id="PreviousButton" value="Previous" type="submit" /> 
    <input id="NextButton" value="Next" type="submit" /> 

    <input id="Button" name="btnSubmit" type="hidden" /> 

в jOuery-

 $("#PreviousButton").click(function() { 
      $("#Button").val("Previous"); 
     }); 

     $("#NextButton").click(function() { 
      $("#Button").val("Next"); 
     }); 

Тогда вы можете увидеть в форме результаты - что содержит "Button".

Смежные вопросы