Я работаю над страницей, которая в основном представляет собой длинную форму, с таблицами информации, за которой следует кнопка отправки после каждой таблицы.
Форма отправляет себе и изменяет информацию в таблицах на основе ввода пользователем.
То, что я хотел бы сделать, это перейти на страницу «Раздел X», если нажата кнопка «Отправить кнопку X», перейти к разделу «Раздел Y», если нажата кнопка «Отправить кнопку Y» и т. Д.
В настоящее время я использую этот Javascript в главе документа, чтобы попытаться выполнить следующее:
<script type="text/javascript"> var anchors = new Array( <?php for($i = 0; $i < 13; $i++) { $anchors = "\"$divTag[$i]\""; if($i < 12) { $anchors .= ", "; } echo $anchors; } ?> ) function jumpToAnchor() { <?php if(isset($_POST["submit_fjw"])) { ?> window.location = String(window.location).replace(/\#.*$/, "") + "#" + anchors[0]; <?php } if(isset($_POST["submit_jwl"])) { ?> window.location = String(window.location).replace(/\#.*$/, "") + "#" + anchors[1]; <?php } ?> }
Это работает … любопытно. Он не прыгает при первом нажатии кнопки «Отправить», а второй.
Я открыт для предложений … меньше javascript лучше, потому что мои навыки javascript слабы в лучшем случае. Могу ли я использовать переменную, привязанную к кнопке отправки, которая передаст значение скрипту PHP и правильно перейдет в нужную секцию?
Вы пробовали что-то вроде этого?
<form action="thisfile.php#section2" name="form1" ... > .... </form> <a name="section2"> <form action="thisfile.php#section3" name="form2" ... > .... </form> <a name="section3"> <form ....
когда форма 1 отправляется, файл перезагружается и автоматически переходит на якорь с именем section2, когда отправляется form2, он прокручивается до раздела 3 и т. д.
Может быть, вам удобнее использовать http://www.w3schools.com/html/html_links.asp (раздел HTML-ссылки – Атрибут имени) вместо javascript? Просто предложение.
Я думаю, что div находится под кодом JavaScript. Выполнение location.hash = 'div-id'
не будет работать, потому что браузер не проанализировал div во время выполнения скрипта. Вы можете попробовать переустановить код JavaScript (перемещая его где-нибудь после div) или обернуть логику внутри window.onload
следующим образом:
window.onload = function() { window.location.hash = "somediv"; }
Другим возможным решением является изменение атрибута действия формы при нажатии кнопки:
<form action="/post.php" method="post"> <!-- blah blah blah --> <input type="submit" onclick="this.form.action += '#div1';"> <input type="submit" onclick="this.form.action += '#div2';"> </form>
После этого этот трюк не требует JavaScript.