Как захватить событие onchange или onclick в группе переключателей в коде PHP?

#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;
}