@ivan_it

Изменение html в зависимости от radio?

Всем привет, у меня есть
<input type="radio" name="paymentType" value="PC">
<input type="radio" name="paymentType" value="AC">
<input type="radio" name="paymentType" value="MC">

как сделать чтобы в зависимости от выбранного radio менялось значение action
Было
<form target="_blank" method="POST" action="../page1">

стало
<form target="_blank" method="POST" action="../page/sds/3">
  • Вопрос задан
  • 392 просмотра
Решения вопроса 1
@2bllk
Почему бы Вам этим на сервере не заниматься?
<form target="_blank" method="POST" action="../index.php">
    <input type="radio" name="paymentType" value="PC">
    <input type="radio" name="paymentType" value="AC">
    <input type="radio" name="paymentType" value="MC">
</form>

index.php
if (isset($_POST['paymentType'])){
    if ($_POST['paymentType'] === 'PC')
        header('Location: ../page/sds/3')
        // ...
}


это все понятно но мне нужно изменить форму до её отправки!!!
Тоесть в зависимости от выбранного radio форма будет уходить на другой сайт


Второй вариант:
<html>
<head>
	<title>Document</title>
</head>
<body>
	<form target="_blank" method="POST" action="../index.php" name="form">
	    <input type="radio" name="paymentType" value="PC">
	    <input type="radio" name="paymentType" value="AC">
	    <input type="radio" name="paymentType" value="MC">
	</form>

	<script type="text/javascript">
		document.form.onchange = () => {
			switch ((new FormData(document.form)).get('paymentType')){
				case 'PC':
					document.form.action = '/page/sds/3';
				break;
				case 'AC':
					document.form.action = '/page/sds/4';
				break;
				case 'MC':
					document.form.action = '/page/sds/5';
				break;
			}
		}
	</script>
</body>
</html>
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@NinjaNickName
Web разработчик
Если обработчик формы на стороне php:

C jQuery:
$.ajax({
  url: "some.php", // урл обработчика
  success: function(data){
    console.log( "Прибыли данные: " + data ); // получили данные обработчика и вывели в консоль 
    $("#form1").attr("action", data); // для формы form1 меняем атрибут action на data который получили из обработчика формы some.php
  }
});


id у формы не забудьте прописать
<form id="form1" target="_blank" method="POST" action="../page1">


Или решение без бекенда:

$('#form1 input').on('change', function() {
   console.log($('input[name=radioName]:checked', '#myForm').val()); // выводим в консоль выбранное значение 

switch ($('input[name=radioName]:checked', '#myForm').val()) {
  case 'PC':
    $("#form1").attr("action", '../page/sds/3'); 
    break;
  case 'AC':
   $("#form1").attr("action", '../page/sds/2'); 
    break;
  case 'MC':
    $("#form1").attr("action", '../page/3');  
    break;
}
});
Ответ написан
anton_reut
@anton_reut
Начинающий веб-разработчик
<input type="radio" name="paymentType" value="<?php $action ='../page/sds/3'?>">
<input type="radio" name="paymentType" value="<?php $action ='../page/sds/4'?>">
<input type="radio" name="paymentType" value="<?php $action ='../page/sds/5'?>">

<form target="_blank" method="POST" action="<?php echo $action; ?>">

Не?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы