7. Вибір елементів форм

Для вибору елементів форм використовуються спеціальні селектори:

:checkbox - вибір checkbox для форм, якщо вказати не ідентифікатор форми, а ідентифікатор div, у якому находиться ця форма, то вибір буде аналогічним
:radio - вибір radio- кнопок для форм
:text - вибір input type="text" для форм
:password - вибір input type="password" для форм
:file - вибір input type="file" для форм
:submit - вибір кнопок type="submit" для форм
:reset - вибір кнопок type="reset" для форм
:button - вибір кнопок type="button" для форм
:image - вибір кнопок type="image" для форм

Фільтри:

:checked - відбір відмічених чекбоксів та радіо-кнопок
:selected - відбір обраного поля в селекторах (випадаючих списках)
:enabled - відбір активних (незаблокованих) елементів форм
:disabled - відбір неактивних (заблокованих) елементів форм

Вибір (true) та відміна вибору (false) в чекбоксах та селекторах

.prop ('checked', true)- відмітити чекбокс
.prop ('checked', false)- зняти відмітку чекбоксу
.prop ('selected', true)- вибрати поле селектору
.prop ('selected', false)- відмінити вибір поля селектору

Блокування та розблокування елементів форм

$('#select').prop('disabled', true) - заблокувати вибране
$('#select').prop('disabled', false) - розблокувати вибране

Перевірка відміченості чекбоксу

if($('#form :checkbox').prop('checked')) - якщо вибраний чекбокс то ... інакше (else) ...

Приклади

:checkbox
< form id='frm'>
     Чекбокс (value="ON"):	
</form>

🔎 Отримуємо value з чекбоксу

Чекбокс (value="ON"):

- отримуємо данні з чекбоксу:

🔎 Перемикання чекбоксу

/*Отримуємо данні з value()*/
 $('#btncb').click(function(){
             var result = $('#frm :checkbox').val();
               $('#vcb').text(result);
});
/*Перемикаємо чекбокс*/
$('#btncb1').click(function(){
       if($('#frm :checkbox').prop('checked')){
					$('#frm :checkbox').prop('checked',false);
				}else{
					$('#frm :checkbox').prop('checked',true);	
				}
});

🔎 Зміна стану чекбоксу (поставте/зніміть відмітку чекбоксу):

.prop('checked')
$('#form :checkbox').on('change', function(){
				if($(this).prop('checked')){
					$('#vcb').text("Відмічено");
				}else{
					$('#vcb').text("Не відмічено");
				}});
.is(':checked')
$('#frm2 :checkbox').on('change', function(){
				if($(this).is(':checked')){
					$('#vcb2').text("Відмічено");
				}else{
					$('#vcb2').text("Не відмічено");
				}});
$(this)[0].checked
$('#frm3 :checkbox').on('change', function(){
                 if($(this)[0].checked) $('#vcb3').text("Відмічено");
                    else $('#vcb3').text("Не відмічено");
                });

🔎 Керування групою чекбоксів

<input type="checkbox"  id="mChb"/> - вибрати всі
Група чекбоксів: <div id="gChb"> <input type="checkbox" value="1" /> : 1
<input type="checkbox" value="2" /> : 2
<input type="checkbox" value="3" /> : 3
</div>
- вибрати всі
Група чекбоксів:
: 1
: 2
: 3
Кількість вибраних чекбоксів у групі:
Для того щоб відібрати тільки відмічені чекбокси використовуємо фільтр :checked
/* код зміни головної (спільної) кнопки */
$('#mChb').on('change', function(){
                 if($(this).prop('checked')){
					$('#gChb :checkbox').prop('checked',true);
				}else{
					$('#gChb :checkbox').prop('checked',false);	
				}
				/* вибираємо відмічені і виводимо їх */
				var countChb = $('#gChb :checkbox:checked').length;
				$('#vcb').text(countChb);
	});
	
/* при зміні відміченності чекбоксів у групі -
               підраховуємо та виводимо кількість  */	             
 $('#gChb :checkbox').on('change', function(){
            var countChb = $('#gChb :checkbox:checked').length;
				$('#vcb').text(countChb);
	}); 

:radio
<form id="form">
     
     
</form>
Отримуємо val() з радіокнопок:
$('#form :radio').on('change', function(){
                 var vr= $(this).val();
                 $('#vcb4').text(vr);
              });

Селектори

🔎 Отримуємо данні з селектору

<form id="frm">
<select>
    
    
    
    
    
</select>
</form>

Різні варіанти отримання даних з селекторів

1. Отримуємо value з обраного поля option $(this).val():
2. Отримуємо текст з обраного поля option ($(this).find('option:selected')):
2. Отримуємо атрибут (attr) data з обраного поля option $('#form select option:selected'):

$('#form select').on('change', function(){
/* 1 */	     var va=$(this).val();
				        $('#inf1').text(va);
				         
/* 2 */	     var os = $(this).find('option:selected').text();
                       $('#inf2').text(os);
                       
/* 3 */	     var at = $('#form select option:selected').attr('data-s');
				        $('#inf3').text(atr);
	});

🔎 Змінюємо вибір в селекторі скриптом

<form id="frm">
Селектор 1: 
<select>
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>
Селектор 2:
<select>
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>

Вибір в одному селекторі змінює інший

Селектор 1: Селектор 2:

$('#frm select').on('change', function(){
	/* отримуємо текст з селектору, який змінюємо */
         var to = $(this).find('option:selected').text();
               
 /* вибираємо в селекторах options з таким самим змістом 
                              і робимо його вибраним selected */          
        $('#frm select option:contains('+to+')').prop('selected', true);   
                 
	});	

:enabled та :disabled

🔎 Вибір незаблокованих та заблокованих елементів форм, блокування розблокування елементів форм

<form id="frm">
    <input type="checkbox" checked="checked"/> - підтвердіть згоду
<button>Відправити </form>
- підтвердіть згоду
$('#frm :checkbox').on('change', function(){
     if($(this).prop('checked')) $('#frm button').prop('disabled',false );
     else $('#frm button').prop('disabled', true);
 });	
:enabled - відбір активних (незаблокованих) елементів форм
:disabled - відбір неактивних (заблокованих) елементів форм

- перевіряємо стан кнопки "Відправити"
Заблоковано -
Розблоковано -
$('#btn').click(function(){
   $('#inf1').text($('#frm button:disabled').length);
   $('#inf2').text($('#frm button:enabled').length);
});	

далі ✏
Ігор Ка