Как вывождение option из строя в select

Я работаю с PHP и языком сценариев JavaScript.

У меня есть один select, который наполняется, принеся данные с BD. То, что я пробую сделать, что, выбрав выбор select, будьте выведен из строя для того, чтобы пользователь не смог соглашаться снова на этот выбор. Кто-то может бросать мне руку?´

Здесь я оставляю немного моего кода:

<select id="Cursos">  </center>
		<option id="opt0" value="#">Seleccione su curso</option>
		<?php 
			
			while($curso=pg_fetch_array($resultado)){
		?>
		<option id="opt1" value="<?php echo $curso[id_curso] ?>"><?php echo $curso[1] ?> </option> <?php } ?>	
	</select> 
	<input type="submit" name="btn1" onclick="quest00.php" value="Ir al curso">
	<script> </script>
1
задан 10.01.2017, 23:08
0 ответов

Если, что ты хочешь, чтобы он произошел, дело в том, что он был выведен из строя select заверши для того, чтобы пользователь не смог менять Ваш выбор, что ты можешь делать, состоит в том, чтобы менять добавлять признак disabled со стоимостью disabled или true.

Ты должен иметь в виду, что поля, которые выведены из строя, не посланы формуляром, из-за того, что ты был бы должен добавлять скрытое поле с тем же самым name что select и стоимость, которая была выбрана (и этот да будет послан без проблем).

Здесь ты можешь видеть пример функционируя:

document.getElementById("Cursos").addEventListener("change", function() {

  // crea un campo oculto con el mismo nombre que la lista desplegable
  var oculto = document.createElement("input");
  oculto.type  = "hidden";
  oculto.value = this.value;
  oculto.name  = this.name;
  document.getElementById("miForm").appendChild(oculto);
  
  // deshabilita la lista desplegable
  this.disabled = "disabled";
});
<form id="miForm">
  <select id="Cursos" name="Cursos">  
    <option id="opt0" value="#">Seleccione su curso</option>
    <option id="opt1" value="1">Curso 1</option>
    <option id="opt2" value="2">Curso 2</option>
    <option id="opt3" value="3">Curso 3</option>
  </select> 
  <input type="submit" name="btn1" value="Ir al curso">
</form>
2
ответ дан 03.12.2019, 17:46

Не пробуй лишать никогда власти решения пользователя, поставь плохой опыт пользователя (UX, стоил излишек).

function onChange (select) {
  const value = select.value;
  let option = select.querySelector(`option[value="${value}"]`);
  option.disabled = true;
}
<select onchange="onChange(this)">
  <option value="a">A</option>
  <option value="b">B</option>
</select>
0
ответ дан 03.12.2019, 17:46
  • 1
    Глаз с этой solució n, потому что он может поддерживать проблемы: когда enví an формуляры, поля, что está n disabled проигнорированы. Así что, если пользователь меняет стандартную настройку select, когда option выводятся из строя, как будто он был выведен select из строя и не enviará с формуляром. Aquí ты можешь видеть пример того, что я говорю. Попытайся посылать формуляр, смотри log, измени select, вновь пошли формуляр и verá s в log, который не посылает то же самое себе. –  10.01.2017, 23:21
  • 2
    У тебя есть вся razó n, ademá s проблем ló gicos tambié n существуют проблемы usabilidad. Я не вижу необходимость дезактивировать opció n в случае OP, потому что, если потом он меняется opinió n уже не podrá возвращаться в selecció n предыдущий. В конце концов, это плохая идея. Спасибо за твой комментарий. –  10.01.2017, 23:24

К выбору, который ты захочешь вывести из строя, добавь свойство disabled но то, в чем ты действительно нуждаешься, является условием для того, чтобы, когда он будет выполнен тогда, он напечатал это свойство. Считай следующий код:

while($curso=pg_fetch_array($resultado)){   
    echo '<option id="opt1" value="'. $curso[id_curso] .'" ' . ($se_deshabilita == true ? 'disabled' : '') . '>' . $curso[1] .'</option>';
} 
?>  
</select> 
0
ответ дан 03.12.2019, 17:46

Альтернатива состоит в том, чтобы использовать plugin Chosen или select2, что кроме функциональности, в которой ты нуждаешься, вносит другие характеристики.

Chosen: https://harvesthq.github.io / chosen /

Select 2 https://select2.github.io/examples.html

0
ответ дан 03.12.2019, 17:46

Теги

Похожие вопросы