Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема со скрытием select (https://javascript.ru/forum/dom-window/62121-problema-so-skrytiem-select.html)

serge_spb 25.03.2016 15:00

Проблема со скрытием select
 
Добрый день!
Хотел попросить помощи с кодом.
Есть код php который формирует в цикле селекты на странице:

public function getTextfield($field,$ranges = NULL){
		$defaut_values = JRequest::getVar("xf_{$field->id}_txt",'');
		$values = json_decode($field->value);	
		foreach ($values as $f)
        {
           	if($defaut_values){
           		$f->value = $defaut_values;
           	}
        	$html .= "\n\t<input type=\"text\" class=\"exfield exgroup{$field->group}\" name=\"xf_{$field->id}_txt\" id=\"xf_{$field->id}_txt\" value=\"{$f->value}\" />";
        }
        return $html;
	}


Не пойму как скрыть селект xf_6, чтобы потом он появлялся при выборе определенного option из xf_5 ? Я понимаю что его сначала нужно скрыть дивом, а потом прописать что-то типа:
<script type="text/javascript">  
	// <![CDATA[
	$(document).ready(function() {
		$("select#xf_5").change(function() {
			if ($(this).val() == "2") {
				$("select#xf_6").show();
			} else {
				$("select#xf_6").hide();
			}
		});
		
	});
	// ]]>
	
</script>

Я только не понимаю как в цикле создания селектов присвоить одному из них какой-то див?
Буду рад любой помощи!

Alex_63 29.03.2016 19:08

serge_spb,
<script type="text/javascript">  
	$(document).ready(function() {
		$("select#xf_5").change(function() {
			if ($(this).find('option:selected').attr('value') == "2") {
				$("select#xf_6").show();
			} else {
				$("select#xf_6").hide();
			}
		});
		
	});
</script>

рони 29.03.2016 19:45

Alex_63,
чем ваш код интереснее макета ТС?

рони 29.03.2016 19:47

Цитата:

Сообщение от serge_spb
Я понимаю что его сначала нужно скрыть дивом

а может css?

Alex_63 30.03.2016 18:01

рони,
Мой должен сработать, делал так не раз, (мну походу не совсем понял, что требуется

Ну если нун изначально скрыть, тогда так: (Код в сумме
<style>select#xf_6{display:none}</style>
<script type="text/javascript">  
$(document).ready(function() {
	$("select#xf_5").change(function() {
		if ($(this).find('option:selected').attr('value') == "2") {
			$("select#xf_6").show();
		} else {
			$("select#xf_6").hide();
		}
	});
});
</script>

рони 30.03.2016 18:17

Alex_63,
основной вопрос был почему не if(this.value == 2) , но можно и совсем без if

Dilettante_Pro 30.03.2016 18:30

Цитата:

Сообщение от serge_spb (Сообщение 412001)
Есть код php который формирует в цикле селекты на странице:

public function getTextfield($field,$ranges = NULL){
		$defaut_values = JRequest::getVar("xf_{$field->id}_txt",'');
		$values = json_decode($field->value);	
		foreach ($values as $f)
        {
           	if($defaut_values){
           		$f->value = $defaut_values;
           	}
        	$html .= "\n\t<input type=\"text\" class=\"exfield exgroup{$field->group}\" name=\"xf_{$field->id}_txt\" id=\"xf_{$field->id}_txt\" value=\"{$f->value}\" />";
        }
        return $html;
	}

......................
..................
Я только не понимаю как в цикле создания селектов присвоить одному из них какой-то див?

А где цикл создания селектов?

laimas 30.03.2016 19:13

Я только не понимаю как в цикле создания селектов присвоить одному из них какой-то див?

Ну какой-то присваивается - id=\"xf_{$field->id}_txt\", правда как уже заметили, это не список.

И зачем почем зря нагружать парсер:

$html .= '<input type="text" class="exfield exgroup'.$field->group.'" name="xf_'.$field->id.'_txt" id="'.xf_'.$field->id.'_txt" value="'.$f->value.'" />';


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


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