Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать обязательным input radio? (https://javascript.ru/forum/misc/56040-kak-sdelat-obyazatelnym-input-radio.html)

Anrew 26.05.2015 23:24

Как сделать обязательным input radio?
 
Наиумнейшие, помогите, пожалуйста – есть код
$(document).delegate(".b1c", "click", function() {
    $("#myCheckbox").prop("checked");
		bc = [];
		bo = []; // clear array

		bg = $(".b1c-good").length == 0 ? $("body") : $(this).closest(".b1c-good");
		bn = $(bg).find(".b1c-name").html().length == 0 ? $(bg).find("h1").text() : $(bg).find(".b1c-name").text();

		$(bg).find("[data-bme]").each(function() {
			var elTag = $(this)[0].nodeName.toLowerCase(); //prop("tagName");
			bc.push($(this).attr("data-bme")); // add field name

			switch (elTag) { // find value
				case "textarea": // textarea
					bo.push($(this).val());
					break;
				case "select": // selects
					bo.push($(this).find(":selected").text());
					break;
				case "input": 
					var elType = $(this).attr("type").toLowerCase(); // get input type
					switch (elType){
						case "text": // text fields
						case "hidden": // hidden values
						case "radio": // radio
					    if (this.checked) { bo.push(this.value);
						} else {
                            bc.pop();
                        }
							break;
						case "checkbox": // guess
							bo.push($(this).is(":checked") ? bmeData["txt.yes"] : bmeData["txt.no"]);
							break;
					}
					break;
				default: // div, span, p, etc.
					bo.push($(this).text());
			}
			
		});
		
$(".b1c-form .b1c-title-name span").html(bn);
	  showForm();
       return false;	
	});

И набор кнопок – например
<input type="radio" value="переменный" id="Model11" name="1Model" data-bme="Модель">
<input type="radio" value="переменный" id="Model21" name="2Model" data-bme="Модель">
<input type="radio" value="переменный" id="Model31" name="3Model" data-bme="Модель">


Нужно чтобы при клике если хоть один инпут не нажат, то возле кнопки появлялось – «не выбрано» Если нажат – открывалась форма.
Пробовал делать так – добавить ко всем инпутам class=”model”
if ($(".model").prop("checked")){
		$(".b1c-form .b1c-title-name span").html(bn);
		showForm();		
		} else {
		$('.b1c').append('<span>Сначала выберите модель.</span>');
		return false;
        }

Но так работает только при выборе первого инпута. И еще при каждом клике выдает «сначала выберите модель» Я понимаю, что нужно делать проверку (если уже есть <span> то при клике и не выбранном инпуте, еще раз не показывать) но не знаю как это все реализовать…

рони 26.05.2015 23:37

Anrew,
if ($(".model:checked").length)

Anrew 26.05.2015 23:45

Спасибо большое. А подскажите как один раз <span>сначала... добавлять?

рони 26.05.2015 23:51

Anrew,
также )))
if(!$('.b1c span').length) $('.b1c').append('<span>Сначала выберите модель.</span>');

Anrew 27.05.2015 00:07

Спасибо за совет, но тут вылезла еще проблемка - теперь этот span добавляется ко всем кнопкам .b1c (их у меня несколько и обернуты в .b1c-good) Инпуты берутся правильно - только там, где была нажата кнопка, а вот span ко всем кнопкам добавляется...

рони 27.05.2015 00:25

Anrew,
я показал вам проверку с помощью length -- а куда и зачем вы добавляите мне неизвестно.

Anrew 27.05.2015 00:32

рони,
и за что Вам еще раз огромное спасибо) Дальше я сам разберусь - уже понял, что (bn) - выдает id того блока, где присутствует эта кнопка, т.е. мне нужно типо этого if(!$('.b1c span').length) $('(bn).b1c').append('<span>Сначала выберите модель.</span>'); Но только не знаю куда этот (bn) засунуть, чтобы было правильно)))

kostyanet 27.05.2015 05:28

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

рони 27.05.2015 07:38

Anrew,
гадание ....
if(!$('span',this).length) $(this).append('<span>Сначала выберите модель.</span>');

Anrew 27.05.2015 09:06

Да, действительно - с кусочком кода, что я дал, сложно разобраться)
Но рони угадал)) СПАСИБО


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