Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Изменение radio Jquery (https://javascript.ru/forum/jquery/63612-izmenenie-radio-jquery.html)

Skyder 18.06.2016 11:46

Изменение radio Jquery
 
У меня есть список клиентов.
При нажатии на пункт списка подгружается через iframe и в отдельной форме открываются детальные данные.
В данных есть два radio
Одно отвечает за пол, второй за статус клиента.
<tr><td class='data_of_client_left_colum'>Пол</td>
   <td colspan='3'>
	<input name='male' class='male' type="radio" value="0">Муж
	<input name='male'  class='male'  type="radio" value="1">Жен
   </td></tr>
<tr><td class='data_of_client_left_colum'>Статус</td>
       <td colspan='3'>
<input name='status' class='status' type="radio" value="1">1
<input name='status' class='status' type="radio" value="2">2
<input name='status' class='status' type="radio" value="3">3
<input name='status' class='status' type="radio" value="4">4
        </td>
</tr>


Код, который обрабатывает данные следующий
function show_user_info(lastn,firstn,patr,male,stat,DOB,PH1,PH2,formul){
 	$("#Freset_info_block").trigger('reset');

	//$(".male").removeAttr("checked");
	//$(".status").removeAttr("checked");

	if(male=='1'){ $(".male").eq(0).attr("checked","checked");}
	else	{ $(".male").eq(1).attr("checked","checked");}

	$('input:radio[name="status"]').removeAttr("checked");
 $('input:radio[name="status"]').filter('[value="'+stat+'"]').attr('checked',true);

}


Несколько проблем возникло в ходе выполнения:
1. Почему-то не обнуляет форму, хотя через кнопку "reset" внутри формы все обнуляется
2. При прощелкивании нескольких клиентов radio меняется на необходимые, но после того, как radio переключается, повторно то же самое включить невозможно. Остается на последнем значении.

Полагаю, что 2 проблема исчезла бы, если бы форма обнулялась.
Но пробовал ее еще решить через обнуление всех чеков(закоментирвоанные строки), но ситуация не меняется. Только если до этого чек оставался на последнем использованном радио, то с обнулением оно просто все убирает и больше не работает.

Подскажите, что может быть? Спасибо!

рони 18.06.2016 12:04

Skyder,
замените attr на prop, а так маловато данных

рони 18.06.2016 12:16

Skyder,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

  <script>
 $(function() {
    function show_user_info(lastn, firstn, patr, male, stat, DOB, PH1, PH2, formul) {
        $(".male").eq(+!male).prop("checked", true);
        $('input:radio[name="status"][value="' + stat + '"]').prop("checked", true)
    }
    show_user_info(0, 0, 0, 1, 3, 0, 0, 0, 0); //тест установки  checked
    window.setTimeout(function() { //тест сброса формы
        $("#Freset_info_block").trigger("reset")
    }, 3E3)
});
  </script>
</head>

<body>
<form id="Freset_info_block" action="http://">


 <table width="400"  >
 	<thead>

 	</thead>
 	<tbody>
 		<tr><td class='data_of_client_left_colum'>Пол</td>
   <td colspan='3'>
  <input name='male' class='male' type="radio" value="0">Муж
  <input name='male'  class='male'  type="radio" value="1">Жен
   </td></tr>
<tr><td class='data_of_client_left_colum'>Статус</td>
       <td colspan='3'>
<input name='status' class='status' type="radio" value="1">1
<input name='status' class='status' type="radio" value="2">2
<input name='status' class='status' type="radio" value="3">3
<input name='status' class='status' type="radio" value="4">4
        </td>
</tr>

 	</tbody>
 </table>
</form>
</body>
</html>

Skyder 18.06.2016 20:12

Цитата:

Сообщение от рони (Сообщение 419823)
Skyder,
замените attr на prop, а так маловато данных

Спасибо!) Я почему-то забыл совсем о prop... давно не работал с JQuery...

Еще не могу одного понять, в той же функции не обнуляет форму...
Как не кручу,как не верчу - ничего не обнуляет...
Может я чего-то не так использую, или какие-то должны быть другие требования к форме...
Форма ровно включает всю таблицу с input'ами+ другие, текстовые...
<form action='/' name='reset_info_block'  id='Freset_info_block'>
						<table class='data_of_client'>
							<tr><td class='data_of_client_left_colum'>Фамилия</td><td colspan='3'><input type='text' name='asdasd' value=''  id='lastname' class='data_input'></td></tr>
							<tr><td class='data_of_client_left_colum'>Имя</td><td colspan='3'><input type='text' id='firstname' class='data_input'></td></tr>
							<tr><td class='data_of_client_left_colum'>Отчество</td><td colspan='3'><input type='text' id='patronimic' class='data_input'></td></tr>
							<tr><td class='data_of_client_left_colum'>Пол</td><td colspan='3'>
										<input name='male' class='male' type="radio" value="0">Муж
										<input name='male'  class='male'  type="radio" value="1">Жен
									</td></tr>
							<tr><td class='data_of_client_left_colum'>Статус</td>
								   <td colspan='3'>
								   	<input name='status' class='status' type="radio" value="1">Самостоятельно<BR>
								   	<input name='status' class='status' type="radio" value="2">На лечении<BR>
								   	<input name='status' class='status' type="radio" value="3">Напоминание<BR>
								   	<input name='status' class='status' type="radio" value="4">Без напоминания
								   </td>
							</tr>
							<tr><td>Дата рождения</td><td>Телефон 1:</td><td>Телефон 2:</td></tr>
							<tr><td><input type='text' id='date_of_birth' class='data_input'></td><td><input type='text' id='phone1' class='data_input'></td><td><input type='text' id='phone2' class='data_input'></td></tr>
						</table>
...
тут еще несколько таблиц с input'ами
...

</form>


Извините, может глупые вопросы... действительно очень давно не пользовался jQuery, а тут понадобилось кое-что для своей же работы, а как назло...

рони 18.06.2016 20:17

Цитата:

Сообщение от Skyder
Еще не могу одного понять, в той же функции не обнуляем форму...
Как не кручу,как не верчу - ничего не обнуляет...
Может я чего-то не так использую, или какие-то должны быть другие требования к форме...

код перед вами, сравните что у вас иначе.


Часовой пояс GMT +3, время: 19:07.