Как включить определенный файл php, когда div отображается / display: "block" - PullRequest
0 голосов
/ 02 марта 2012

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

Все они скрыты до тех пор, пока вы не выберете форму из выпадающего списка, а затем форма появится.собственная проверка.Проблема в том, что я включил проверку для каждой формы в свой собственный div с каждой конкретной формой.

Так что я подумал, потому что каждый div был скрыт, проверка для всех других скрытых форм не будет работатьЯ ошибался: |

Есть ли способ включить файл php, если div не скрыт?

Ответы [ 4 ]

3 голосов
/ 02 марта 2012

Краткий ответ: Интернет не работает таким образом.

Более длинный ответ: браузер не включает PHP, сервер включает его и выплевывает весь вывод HTML в браузер. Браузер просто видит вывод HTML, поэтому он видит и отправляет все.

Есть несколько решений. Я бы порекомендовал убедиться, что у каждого из ваших div-ов есть свой собственный тег формы, а затем добавить к каждому скрытый вход, чтобы ваш PHP-скрипт мог решить, какую проверку он должен делать. Как то так:

<div id="formfoo">
<form method="POST" action="/your-script.php">
<input type="hidden" name="validate" value="formfoo" />
<!-- rest of your form -->
</form>
</div>

Тогда в PHP:

if( $_POST['validate'] == 'formfoo' ) {
    // validate fields in formfoo here.
}

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

3 голосов
/ 02 марта 2012

Поскольку php уже обработан для отправки всего содержимого в браузер, вы можете работать только с javascript. Способ сделать это - привязать валидацию форм к отправке этой конкретной формы, чтобы событие вызывалось только для правильной формы.

1 голос
/ 02 марта 2012

дополнительный совет:

можно отключить элементы формы в скрытых div с:

<input type="text" name="bla" disabled="disabled" />

и включить их через JavaScript после их показа.

отключенные элементы не отправляются при отправке формы.

.... обработка отключения / включения может потребовать гораздо больших усилий, чем разделение форм и создание серверного сайта для разграничения, как предложил Cfreak...

1 голос
/ 02 марта 2012

PHP не имеет представления о том, что видно по размеру клиента, а что нет.Вам придется подумать о другом подходе.

К счастью, существуют альтернативные методы.

Поскольку каждый div содержит форму, вы можете просто иметь все формы, содержащие скрытое поле (скажем, formid или что-то), которое вы можете проверить, чтобы определить, какая форма была отправлена.

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

...