У меня есть форма с тремя флажками. Пользователи могут выбрать комбинацию из них, а затем я хотел бы, чтобы они перенаправлялись на определенные страницы в зависимости от их выбора, как только они нажмут кнопку отправки в форме.
Это делается в WordPress с помощью простого HTML-редактора страниц.
Я провел массу исследований на этом сайте с другими подобными вопросами, но ни один из этих ответов не работает для меня. Пожалуйста, посмотрите HTML, который я создал сам, и окончательную версию javascript, которую я выбрал из своего исследования на этом сайте.
Что я делаю не так? Я новичок в Javascript.
HTML:
<form id = "selections" method = "post">
<table class = "ss" border = "0" cellpadding = "0" cellspacing = "0">
<tr style = "background-color:#ffffff;">
<td class = "ss2" width = "150"></td>
<td class = "ss2" width = "100"><center><strong><p style = "font-family: arial, sans-serif; color:#009639;" >PDF</p></strong></center></td>
<td class = "ss2" width = "100"><center><p style = "font-family: arial, sans-serif; color:#009639;" ><strong>POSTCARD</strong></p></center></td>
<td class = "ss2" width = "100"><center><p style = "font-family: arial, sans-serif; color:#009639;" ><strong>HTML</strong></p></center></td>
<td class = "ss2" width = "100"></td>
<td class = "ss2" width = "150"></td>
</tr>
<tr style = "background-color:#DDDDDD; height: 1px;">
<td class = "ss"><strong><p style = "font-family: arial, sans-serif">Social Security</p></strong></td>
<td class = "ss2"><center><input type = "checkbox" id = "ssPDF" value = "1"></center></td>
<td class = "ss2"><center><input type = "checkbox" id = "ssPOSTCARD" value = "2"></center></td>
<td class = "ss2"><center><input type = "checkbox" id = "ssHTML" value = "3"></center></td>
<td class = "ss2"><input class = "ss" type = "submit" value = "SUBMIT" id=SUBMIT></td>
<td class = "ss2"><a class = "ss" href = "http://google.com"><p style = "font-family: arial, sans-serif;">PAST ENTRIES</p></a></td>
</tr>
</form>
</table>
Код Javascript:
<script type = "text/javascript">
var ssPDF = $('input[name = "ssPDF"]');
var ssPOSTCARD = $('input[name = "ssPOSTCARD"]');
var ssHTML = $('input[name = "ssHTML"]');
if ( ssPDF.is(':checked') ){
window.location.href = "http://www.stackoverflow.com";
}
if ( ssPDF.is(':checked') && ssPOSTCARD.is(':checked') ){
window.location.href = "http://www.bing.com";
}
if ( ssPDF.is(':checked') && ssHTML.is(':checked') ){
window.location.href = "http://www.google.com";
}
if (ssPDF.is(':checked') && ssHTML.is(':checked') && ssPOSTCARD.is(':checked') ){
window.location.href = "http://www.yahoo.com";
}
</script>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваш код запускается сразу после загрузки страницы, всего один раз. Вам нужно привязать свой код к действию, например, при отправке формы. Таким образом, он будет запущен после того, как пользователь сделает выбор и отправит форму.
$(document).ready(function () { // jQuery wrapper to only run after load
$('form').submit(function(e) { // Pass the event object
e.preventDefault(); // Prevent the form's default action of submitting
var ssPDF = $('input[name = "ssPDF"]');
var ssPOSTCARD = $('input[name = "ssPOSTCARD"]');
var ssHTML = $('input[name = "ssHTML"]');
if ( ssPDF.is(':checked') ){
window.location.href = "http://www.stackoverflow.com";
}
if ( ssPDF.is(':checked') && ssPOSTCARD.is(':checked') ){
window.location.href = "http://www.bing.com";
}
if ( ssPDF.is(':checked') && ssHTML.is(':checked') ){
window.location.href = "http://www.google.com";
}
if (ssPDF.is(':checked') && ssHTML.is(':checked') && ssPOSTCARD.is(':checked') ){
window.location.href = "http://www.yahoo.com";
}
});
});
Я отредактировал свой ответ, чтобы он содержал функцию готовности jquery, и передал событие функции отправки, чтобы мы могли отключить немедленное обновление страницы. Вам также необходимо убедиться, что вы загружаете библиотеку jQuery перед запуском этого кода.
В настоящее время я просто вызываю библиотеку jQuery как часть своего встроенного тега script, например: <script type = "text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">, это правильно или есть другой способ сделать это?
Должен ли я добавить что-то в HTML-часть формы, чтобы вызвать это действие? Я внес ваши изменения, но страница по-прежнему просто обновляется и никуда не уходит.