Это мой первый пост при переполнении стека, но как новичок я часто его посещаю для ответов, но по этому вопросу я не могу найти существующий ответ что помогает мне - из-за моих ограниченных знаний.выбор из раскрывающегося списка не заполняет второй зависимый список переходов из-за предупреждения браузера
На моем веб-сайте используется готовое приложение магазина, для которого поддержка больше не доступна, что я широко изменял в течение нескольких лет. Существуют страницы проверки, в которых есть раскрывающийся список для страны и второй зависимый выпадающий список для штата.
Я удалил выпадающие списки совершенно давным-давно из-за проблемного поведения, которое я не мог исправить, но теперь мне нужно восстановить выпадающие списки (и их код проблемы), потому что мой платежный шлюз меняется на стандартизованный код страны и требования к коду состояния.
Что происходит, когда выбор сделан из выпадающего списка Страна, код отправляет форму перед тем, как выбор может быть сделан из раскрывающегося списка States; в этот момент браузер выводит предупреждение с просьбой подтвердить, что вы хотите оставить страницу, на которой вы находитесь.
Если вы ответите «Нет», вы застряли, потому что раскрывающийся список States остается пустым, и в любом случае кнопки формы (далее, назад, отменены) теперь ничего не делают. С другой стороны, если вы ответите «Да», тогда следующая форма выгрузки будет загружена в браузере, и в этой форме вы должны использовать кнопку «Назад», чтобы вернуться к первой форме, в которой теперь выпадающее окно «Штаты», и теперь вы можете сделать выбор, затем используйте кнопку «next» и т. д. Очевидно, что это не жизнеспособный процесс для пользователя, потому что большинство ответит «нет» и просто застрянет.
Вот соответствующая часть кода:
<tr>
<td class="KT_th"><label for="country_ord">Country:</label></td>
<td>
<select name="country_ord" id="country_ord" onChange="submitMe(this)">
<option value="" >Choose one...</option>
<?php
do {
?>
<option value="<?php echo $row_rsCountry['iso2_cnt']?>"<?php if (!(strcmp($row_rsCountry['iso2_cnt'], $row_rsorder_ord['country_ord']))) {echo "SELECTED";} ?>>
<?php echo $row_rsCountry['name_cnt']?></option>
<?php
} while ($row_rsCountry = mysql_fetch_assoc($rsCountry));
$rows = mysql_num_rows($rsCountry);
if($rows > 0) {
mysql_data_seek($rsCountry, 0);
$row_rsCountry = mysql_fetch_assoc($rsCountry);
}
?>
</select>
<?php echo $tNGs->displayFieldError("order_ord", "country_ord"); ?>
</td>
</tr>
<tr>
<td class="KT_th"><label for="state_ord">State (REQUIRED for USA only):</label (optional)></td>
<td>
<select name="state_ord" id="state_ord">
<option value="">Choose one ...</option>
<?php
do {
?>
<option value="<?php echo $row_rsStates['code_sta']?>"<?php if (!(strcmp($row_rsStates['code_sta'], $row_rsorder_ord['state_ord']))) {echo "SELECTED";} ?>><?php echo $row_rsStates['name_sta']?></option>
<?php
} while ($row_rsStates = mysql_fetch_assoc($rsStates));
$rows = mysql_num_rows($rsStates);
if($rows > 0) {
mysql_data_seek($rsStates, 0);
$row_rsStates = mysql_fetch_assoc($rsStates);
}
?>
</select>
<?php echo $tNGs->displayFieldError("order_ord", "state_ord"); ?>
</td>
</tr>
<tr class="KT_buttons">
<td colspan="2">
<input type="button" onClick="MM_goToURL('parent','index.php?mod=cartview');return document.MM_returnValue" value="< Previous">
<input type="submit" name="KT_Update1" id="KT_Update1" value="Next >">
<input name="button_cancel" type="button" value="Cancel" onClick="document.location = 'index.php?mod=cartview'">
<input type="hidden" name="validate_form" value="1">
</td>
</tr>
</table>
</form>
<script>
function submitMe(el)
{
var frm = el.form;
frm.action = window.location.href;
frm.elements.state_ord.selectedIndex = 0;
frm.elements.validate_form.value = 0;
KT_FVO = {};
frm.elements.KT_Update1.click();
}
</script>
Быть новичком не имеет значения. Лучшее, что вы можете сделать, это передать что-то четкое и поделиться только соответствующим кодом, с отступом хорошо для лучшей читаемости, и у обоих не хватает вашего поста! –
Извините, я знаю, что мне есть чему поучиться. Если я написал слишком много, это потому, что я пытался предоставить достаточно информации, чтобы помочь кому-то, у кого может быть ответ. – David