[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выпадающие поля
CyberFuntik
Есть пара скриптов
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<
script type="text/javascript">
$(document).ready(function() {
$("#parent1").hide();
$("#parent2").hide();
$("#data1").hide();
$("#data2").hide();
$("select[name=parentnumb]").change(function() {
var parentnumb = $(this).val();
if(parentnumb == "1") {
$("#parent1").fadeOut();
$("#parent2").fadeOut();
$("#data1").fadeOut();
$("#data2").fadeOut();
}
if(parentnumb == "2") {
$("#parent1").fadeIn();
$("#parent2").fadeOut();
$("#data1").fadeIn();
$("#data2").fadeOut();
}
if(parentnumb == "3") {
$("#parent1").fadeIn();
$("#parent2").fadeIn();
$("#data1").fadeIn();
$("#data2").fadeIn();
} else {
$("#parent1").fadeOut();
$("#parent2").fadeOut();
$("#data1").fadeOut();
$("#data2").fadeOut();
}
}
);
});
</
script>

Суть работы - есть 4 <fieldset>, у каждого свой и 1 select соответственно. В случае работы скрипта с одним ид все работает на ура, но с 4 ид есть некоторые проблемы. select выглядит следующим образом:

<select name="parentnumb">
<option
value="1">Выберите из списка:</option>
<option
value="2">1</option>
<option
value="3">2</option>
</select>


То есть, при параметре 1 все выпадающие ид скрыты, при 2 - показывается 2 поля и при 3 - все 4. Но. При выборе второго варианта ничего не выдается, как будто выбран первый. Куда можно копать?



Спустя 45 минут, 30 секунд (30.01.2012 - 10:57) redreem написал(а):
показывай полный код всех фиелдов селектов и тп.п.
по твоему описанию ниче не понятно.

Спустя 3 часа, 33 минуты (30.01.2012 - 14:30) nugle написал(а):
Код ужасен, меняем на
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<
script type="text/javascript">
$(document).ready(function() {
var blocks = $("#parent1, #parent2, #data1, #data2");
blocks.hide();

$("select[name=parentnumb]").change(function() {
var parentnumb = $(this).val();
if(parentnumb == "1") {
blocks.fadeOut();
}
if(parentnumb == "2") {
$("#parent1, #parent1").fadeIn();
$("#parent2, #data2").fadeOut();
}
if(parentnumb == "3") {
blocks.fadeIn();
} else {
blocks.fadeOut();
}
}
);
});
</
script>

Что мы тут видим. else относится к последнему if
else {
blocks.fadeOut();
}

исправляй

Спустя 1 час, 23 минуты, 16 секунд (30.01.2012 - 15:54) CyberFuntik написал(а):
Цитата (nugle @ 30.01.2012 - 11:30)
Код ужасен, меняем на
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
                var blocks = $("#parent1, #parent2, #data1, #data2");
  blocks.hide();

  $("select[name=parentnumb]").change(function() {
  var parentnumb = $(this).val();
  if(parentnumb == "1") {
    blocks.fadeOut();
  }
  if(parentnumb == "2") {
    $("#parent1, #parent1").fadeIn();
    $("#parent2, #data2").fadeOut();
  }
  if(parentnumb == "3") {
    blocks.fadeIn();
  } else {
          blocks.fadeOut();
  }
  });
});
</script>

Что мы тут видим. else относится к последнему if
else {
blocks.fadeOut();
}
исправляй

ситуация такая же, при parentnumb2 parent1 выскакивает буквально на секунду и опять пропадает. выкладываю fieldset и select

<fieldset>
<legend>

Количество родителей
</legend>
<table>
<tr>
<td>
Количество родителей: </td>
</tr>
<tr>
<td>
<select
name="parentnumb" id="parentnumb">
<option
value="1">Выберите из списка:</option>
<option
value="2">1</option>
<option
value="3">2</option>
</select></td>
</tr>
</table>
</fieldset>
<fieldset
id="parent1">
<legend>

Данные первого родителя
</legend>
<table
width="100%" border="0">
<tr>
<td
align="center">Фамилия
<br>
<input
type="text" name="p1" size="20" check_message="Проверьте правильность заполнения фамилии" check_pattern="^[a-zA-Zа-яА-Я\-]+$" />
</td>
<td
align="center">Имя
<br>
<input
type="text" name="p2" size="20" check_message="Проверьте правильность заполнения имени" check_pattern="^[a-zA-Zа-яА-Я\-]+$" />
</td>
<td
align="center">Отчество
<br>
<input
type="text" name="p3" size="20" check_message="Проверьте правильность заполнения отчества" check_pattern="^[a-zA-Zа-яА-Я\-]+$" />
</td>
</tr>
</table>
</fieldset>
<fieldset
id="data1">
<legend>

Паспортные данные
</legend>
<table
width="100%" border="0">
<tr>
<td>
Дата рождения</td>
<td>
Серия номер</td>
</tr>
<tr>
<td>
<select
name="select3" check_message="Выберите дату рождения">
<option
value="">День</option>
<option
value="1">1</option>
<option
value="2">2</option>
<option
value="3">3</option>
//бла-бла-бла все числа
<option value="31">31</option>
</select>
<select
name="select4" check_message="Выберите месяц рождения">
<option
value="">Месяц</option>
<option
value="января">Январь</option>
<option
value="февраля">Февраль</option>
<option
value="марта">Март</option>
/бла-бла-бла все месяца
<option value="декабря">Декабрь</option>
</select>
<select
name="select5" check_message="Выберите год рождения">
<option
value="">Год</option>
<option
value="2012">2012</option>
<option
value="2011">2011</option>
<option
value="2010">2010</option>
<option
value="1940">1940</option>
</select></td>
<td>
<input
name="p4" type="text" size="2" maxlength="2" check_message="Проверьте правильность заполнения серии паспорта" check_pattern="^[0-9]+$" />
 
<input name="p5" type="text" size="2" maxlength="2" check_message="Проверьте правильность заполнения серии паспорта" check_pattern="^[0-9]+$" />
 
<input name="p6" type="text" size="6" maxlength="6" check_message="Проверьте правильность заполнения номера паспорта" check_pattern="^[0-9]+$" />
</td>
</tr>
</table>
<table
width="100%" border="0">
<tr>
<td>
Место рождения</td>
<td>
Гражданство</td>
</tr>
<tr>
<td>
<input
name="p31" type="text" size="30" maxlength="100" check_message="Укажите место рождения" check_pattern="^[а-яА-Яa-zA-Z0-9\ \-\.\№\#]+$" />
</td>
<td>
<input
name="p32" type="text" size="10" maxlength="20" check_message="Укажите гражданство" check_pattern="^[а-яА-Я]+$"/>
</td>
</tr>
</table>
<table
width="100%" border="0">
<tr>
<td>
Кем выдан</td>
<td>
Пол</td>
</tr>
<tr>
<td>
<input
name="p7" type="text" size="30" maxlength="100" check_message="Укажите кем выдан паспорт" check_pattern="^[а-яА-Я0-9\№\#\ \-]+$" />
</td>
<td>
<select
name="select01" check_message="Укажите пол">
<option
value="">Выберите из списка:</option>
<option
value="мужской">мужской</option>
<option
value="женский">женский</option>
</select></td>
</tr>
</table>
<table
width="100%" border="0">
<tr>
<td>
Дата выдачи</td>
<td>
Код подразделения</td>
</tr>
<tr>
<td>
<select
name="select6" check_message="Проверьте правильность заполнения даты выдачи паспорта">
<option
value="">День</option>
<option
value="1">1</option>
<option
value="2">2</option>
<option
value="3">3</option>
//бла-бла-бла числа
<option value="31">31</option>
</select>
<select
name="select7" check_message="Проверьте правильность заполнения даты выдачи паспорта">
<option
value="">Месяц</option>
<option
value="января">Январь</option>
<option
value="февраля">Февраль</option>
<option
value="марта">Март</option>
//бла-бла-бла месяца
<option value="декабря">Декабрь</option>
</select>
<select
name="select8" check_message="Проверьте правильность заполнения даты выдачи паспорта">
<option
value="">Год</option>
<option
value="2012">2012</option>
<option
value="2011">2011</option>
<option
value="2010">2010</option>
//бла-бла-бла года
<option value="1980">1980</option>
</select></td>
<td>
<input
name="p8" type="text" size="3" maxlength="3" check_message="Проверьте правильность заполнения кода подразделения" check_pattern="^[0-9]+$" />
-
<input name="p9" type="text" size="3" maxlength="3" check_message="Проверьте правильность заполнения кода подразделения" check_pattern="^[0-9]+$" />
</td>
</tr>
</table>
<table
width="100%" border="0">
<tr>
<td
align="center">Прописка</td>
</tr>
<tr>
<td>
Город</td>
<td>
Улица</td>
<td>
Дом</td>
<td>
Квартира</td>
</tr>
<tr>
<td>
<input
type="text" name="p21" size="20" check_message="Проверьте правильность заполнения адреса прописки" check_pattern="^[0-9a-zA-Zа-яА-Я\-\ ]+$" />
</td>
<td>
<input
type="text" name="p22" size="20" check_message="Проверьте правильность заполнения адреса прописки" check_pattern="^[0-9a-zA-Zа-яА-Я\-\.\ ]+$" />
</td>
<td>
<input
name="p23" type="text" size="5" maxlength="10" check_message="Проверьте правильность заполнения адреса прописки" check_pattern="^[0-9\-\/\]+$" />
</td>
<td>
<input
name="p24" type="text" size="6" maxlength="6" check_message="Проверьте правильность заполнения адреса прописки" check_pattern="^[0-9]+$" />
</td>
</tr>
</table>
</fieldset>


parent2 и data2 аналогично. если возникнет вопрос, что за check_message и check_pattern, скрипт ниже. все работает.

<script type='text/javascript'>
function checkForm(obj, elems) {
var element, pattern;
for(var i = 0; i < obj.elements.length; i++) {
element = obj.elements[i];
if(elems != undefined)
if(elems.join().indexOf(element.type) < 0)
continue;
if(!element.getAttribute("check_message"))
continue;
if( pattern = element.getAttribute("check_pattern")) {
pattern = new RegExp(pattern, "g");
if(!pattern.test(element.value)) {
alert(element.getAttribute("check_message"));
element.focus();
return false;
}
}
else if(/^\s*$/.test(element.value)) {
alert(element.getAttribute("check_message"));
element.focus();
return false;
}
}

return true;
}
</script>

Спустя 3 часа, 14 минут, 15 секунд (30.01.2012 - 19:08) CyberFuntik написал(а):
у кого-нибудь еще есть мысли?

Спустя 1 час, 51 минута, 45 секунд (30.01.2012 - 21:00) nugle написал(а):
CyberFuntik
друг мой, нужно прикладывать немножко усилий, показываешь один код, а jquery имеет селекторы, которых в верстке нет. держи:
$(document).ready(function() {
var blocks = $('#parent1, #data1');
var data1 = $('#data1');
blocks.hide();

$("select[name=parentnumb]").change(function() {

var parentnumb = $(this).val();
if(parentnumb == "1") {
blocks.fadeOut();
}
if(parentnumb == "2") {
$('#parent1').fadeIn();
if(data1.css('display') != 'none')
data1.fadeOut();
}
if(parentnumb == "3") {
blocks.fadeIn();
}
}
);
});
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.