Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Добавление элемента формы при выборе SELECT (https://javascript.ru/forum/jquery/66779-dobavlenie-ehlementa-formy-pri-vybore-select.html)

orangebox 10.01.2017 12:38

Добавление элемента формы при выборе SELECT
 
Добрый день.

На форме есть выпадающий список. Как сделать, чтобы при выборе элемента "Другая сумма" на той же форме появлялся новый input куда эту сумму можно было ввести вручную?

<form method="post" name="form" enctype="multipart/form-data" action="/send.php">
  <select id="fils" name="price" required>
    <option value="">Укажите сумму</option>
    <option value="100">100 руб.</option>
    <option value="200">200 руб.</option>
    <option value="300">300 руб.</option>
    <option value="500">500 руб.</option>
    <option value="other">Другая сумма</option>                                                               
  </select>
</form>

ksa 10.01.2017 13:29

Цитата:

Сообщение от orangebox
Как сделать, чтобы при выборе элемента "Другая сумма" на той же форме появлялся новый input куда эту сумму можно было ввести вручную?

Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
#summ {
	display: none;
}
</style>
<script type='text/javascript'>
$(function (){
	$('#fils').change(function(){
		var o=$('#summ');
		if (this.value=='other') {
			o.show();
		} else {
			o.hide();
		};
	});
});
</script>
</head>
<body>
<form method="post" name="form" enctype="multipart/form-data" action="/send.php">
	<select id="fils" name="price" required>
		<option value="">Укажите сумму</option>
		<option value="100">100 руб.</option>
		<option value="200">200 руб.</option>
		<option value="300">300 руб.</option>
		<option value="500">500 руб.</option>
		<option value="other">Другая сумма</option>                                                               
	</select>
	<input id='summ' type='texp' />
</form>
</body>
</html>

orangebox 10.01.2017 16:24

Спасибо! Работает.

Подскажите ещё как сделать это появляющееся поле обязательным? Если я просто напишу ему параметр required, то оно не даёт отправить форму при выборе любого другого значения из списка. Как это сделать скриптом?

ksa 10.01.2017 16:41

Цитата:

Сообщение от orangebox
Как это сделать скриптом?

Перехватывать отправку формы... Проверять заполняемость полей...

Или ставить/убирать у того поля "параметр required"...

Можно вообще поле удалять... А потом его добавлять сразу с "параметр required".

orangebox 10.01.2017 17:26

Сделал так:

$(function (){
	$('#fils').change(function(){
		var o=$('#summ');
		if (this.value=='other') {
			o.show();
			o.attr('required', 'required');
		} else {
			o.hide();
			o.removeAttr('required');      
		};
	});
});


Вроде работает. Спасибо за помощь.

ksa 11.01.2017 08:29

Цитата:

Сообщение от orangebox
Вроде работает.

А куда оно денется! :D


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