2013-05-10 1 views
0

У меня есть форма в PHP-файле, которую я хочу включить в другие файлы, которые будут в iframe на других страницах. В некоторых случаях цель формы должна быть _top, но в других случаях _blank. Поэтому мне кажется, что я должен установить цель в отдельный файл PHP, а затем включить файл PHP, содержащий форму в этом файле. Основываясь на то, что я нашел в Интернете (я новичок здесь), мне казалось, что что-то же просто, какпростой способ использовать getElementsByTagName для изменения целевой формы?

<script type-"text-javascript"> 
document.getElementsByTagName('form').target = "_top"; 
</script> 

должны быть в состоянии сделать это. Но это не сработало - цель была просто по умолчанию и открыта в iframe. Есть ли простой способ достичь этой цели?

+3

Подсказка: имя метода - getElementsByTagName. Обратите внимание на ** s ** в конце элементов – nicopico

ответ

1

getElementsByTagName возвращает коллекцию. Петля через него, или просто использовать [0], чтобы получить первый ... затем установите target свойство:

document.getElementsByTagName('form')[0].target = "_top"; 

или

var forms = document.getElementsByTagName('form'); 
for (var i = 0; i < forms.length; i++) { 
    forms[i].target = "_top"; 
} 

Обратите внимание, что любой из них должны быть выполнены после<form> доступен/отображается на странице. Таким образом, это означает, что этот код буквально после<form> или внутри события window.onload.

Ссылка:

+0

Это отвечает на вопрос «как это сделать в JavaScript», но выполнение этого с помощью JavaScript вокруг и более подвержено ошибкам. Он также спрашивает, что это самый простой способ достичь этого. Это должно было бы сохранить все это в PHP, поэтому форма HTML, отправленная клиенту, уже находится в состоянии, в котором оно должно быть, то есть - нет Javascript-перенаправления цели. Он так же говорит, что файл PHP для формы будет включен в другие файлы PHP. –

+1

@ErikNedwidek Это хорошо. Вы предоставили PHP-решение, я предоставил JavaScript-решение. Я не какой-то мастер-программист PHP, и у меня не было такого опыта, поэтому я буду придерживаться этого. Вы можете помочь OP с PHP-пути, я не могу. Если этот ответ оказывается слишком сложным для реализации или не работает, то пусть будет так. В то же время, если «target» нужно установить динамически, PHP не сможет помочь.Это все, на что я пытался ответить, причем код, который они предоставили – Ian

+1

, действительно не означал, чтобы наступить на ваши пальцы или оскорбить вас (перечитывая мой комментарий, я вижу, что его можно рассматривать как немного бестактный). Это было что-то более вопросительное, чтобы убедиться, что * I * не пропало что-то важное. –

1

Поскольку вы используете PHP-файл для вызова PHP-файл вашей формы, то почему не просто установить переменную?

form.php:

<form target="<?php echo $target; ?>"> 

parent.php:

<?php 
$target="_top"; 
include "form.php"; 
?> 

some_other.php:

<?php 
$target="_blank"; 
include "form.php"; 
?> 

Теперь мое реальное предложение было бы быть, чтобы сделать вашу форму в функцию (например, - outputForm), чтобы вы могли сделать include_once в верхней части каждого PHP-файла, которому нужна форма, и вызвать outputForm ("_ blank »), где вам нужна форма.

+0

Большое спасибо, это отлично работает. Я просил javascript, но не понял, что его проще реализовать на PHP. Я вижу, что ваше «реальное предложение» может быть более элегантным, но для меня это немного продвинулось. – user1903000

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