#php #html
#php #HTML
Вопрос:
Я не совсем понимаю это, и, возможно, я делаю это неправильно?? (более чем вероятно!) Вот что я хотел бы сделать: у меня есть веб-страница php с 2 переключателями, и когда кто-то изменяет значение, пара меток изменится, а затем установит переменную. У меня есть код, написанный так, что при загрузке страницы он проверяет правильное значение на основе сохраненного значения. Я думал, что в функции onchange () мне просто нужно будет установить флажок, сохранить переменную и обновить страницу? Если это не лучший метод, я открыт для предложений. Вот что у меня есть:
<script>
function displayRadioValue() {
var ele = document.getElementsByName('country');
for(i = 0; i < ele.length; i ) {
if(ele[i].checked)
<? $COUNTRY="US"; ?>
}
}
</script>
<?php
$COUNTRY = urldecode($pluginSettings['COUNTRY']);
?>
Select your country
<input type="radio" id="us" name="country" value="US" onclick="displayRadioValue()" <? if ($COUNTRY=="US") echo "checked"; ?>>
<label for="us">US</label>
<input type="radio" id="other" name="country" value="Other" onclick="displayRadioValue()"<? if ($COUNTRY=="Other") echo "checked"; ?>>
<label for="other">Other</label><p/>
<? if ($COUNTRY=="US"){
echo "City:";
} else {
echo "Latitude";
}
?>
<input type="text" name="CITY" size="16" value="<? echo $CITY; ?>"> <p>
<? if ($COUNTRY=="US"){
echo "State:";
} else {
echo "Longitude";
}
?>
<input type="text" name="STATE" size="12" value="<? echo $STATE; ?>"> <p>
Что я делаю не так?
Комментарии:
1. Мне трудно понять, о чем вы спрашиваете. Вы не можете смешивать PHP и Javascript, поскольку они выполняются в совершенно разное время на разных машинах… Вам нужно либо завершить загрузку новой страницы, либо отправить форму, чтобы установить связь между ними. Если вы не хотите загружать страницу снова, загляните в AJAX для передачи данных между браузером и сервером.
2. Могу ли я выполнить то, что я хочу, используя только PHP? Или проблема, о которой вы говорили при смешивании PHP и JS, заключалась в вызове PHP в функции? Есть ли способ заполнить переменную PHP в функции?
3. Вместо того, чтобы displayRadioValue пытается установить переменную php, ему необходимо отправить форму и передать эти данные PHP в новом запросе на сервер. Затем PHP может передать эту информацию обратно в браузер, если это необходимо для установки атрибута checked. В этом примере у вас много дерьма, и я все еще не понимаю, что вы пытаетесь сделать. Что такое
urldecode($pluginSettings['COUNTRY'])
и откуда оно взялось?4. Хорошо, я запутался в ваших рекомендациях, извините. $COUNTRY = urldecode($pluginSettings[‘COUNTRY’]); получит значение для $COUNTRY из файла настроек, эта часть работает. Может быть, я должен идти по одному шагу за раз. Переключатели предназначены для выбора, находитесь ли вы в США или другой стране. Для ввода данных есть два текстовых поля. Если вы находитесь в США, на метке для полей должны быть указаны город и штат, если вы находитесь в другой стране, тогда они должны указывать широту и долготу. Как я могу изменить это с помощью PHP?
5. Если вы хотите, чтобы они менялись только с помощью PHP, тогда вам придется сначала отправить свою форму, после того, как пользователь выбрал другой переключатель. Вероятно, это следует делать на стороне клиента.
Ответ №1:
попробуй это, братан
if(ele[i].is(':checked'))
это возвращает true, если переключатель установлен, иначе false
Комментарии:
1. Спасибо, но я недостаточно понимаю, чтобы знать, как это использовать.
Ответ №2:
give the same id to both radio inputs like this
<input type="radio" id="us" name="country" value="US" onclick="displayRadioValue()" <? if ($COUNTRY=="US") echo "checked"; ?>>
<label for="us">US</label>
<input type="radio" id="us" name="country" value="Other" onclick="displayRadioValue()"<? if ($COUNTRY=="Other") echo "checked"; ?>>
if (document.getElementById('us').checked) {
country = document.getElementById('us').value;
}