Добавить HTML контроль (ы) через JavaScript - PullRequest
2 голосов
/ 09 ноября 2008

Что-то ускользает от меня ... кажется очевидным, но я не могу понять это.

Я хочу добавить / удалить пару элементов управления HTML на страницу (обычный старый html), когда пользователь меняет значение раскрывающегося списка. Например, можно добавить или удалить текстовое поле «количество гостей в этой комнате» для каждого (из числа) запрошенных номеров ...

Так что, если пользователь выбирает:

1 комната, есть одно текстовое поле

2 комнаты, есть два текстовых поля

3 комнаты, три текстовых поля

обратно в 2 комнаты, два текстовых поля

и так далее ...

Ответы [ 3 ]

4 голосов
/ 09 ноября 2008

Используя прямой DOM и Javascript, вы можете изменить свойство InnterHtml объекта DOM, который будет содержать текстовые поля ... скорее всего, div. Так это будет выглядеть примерно так:

var container = document.getElementById("myContainerDiv");
var html;
for(var i = 0; i < selectedRooms; i++)
{
    html = html + "<input type=text ... /><br />";
}
container.innerHtml = html;

Использование библиотеки Javascript, такой как jQuery, может немного упростить задачу:

var html;
for(var i = 0; i < selectedRooms; i++)
{
    html = html + "<input type=text ... /><br />";
}

$("#myContainerDiv").append(html);
3 голосов
/ 09 ноября 2008

для выбранного списка комнат, добавьте обработчик события onchange, который будет показывать / скрывать текстовые сообщения.

<script>
  //swap $ with applicable lib call (if avail)
  function $(id){
    return document.getElementById(id);
  }
  function adjustTexts(obj){
    var roomTotal = 4;
    var count = obj.selectedIndex;
    //show/hide unrequired text boxes...
    for(var i=0;i<roomTotal;i++){
      if(i < count){
        $('room'+ (i+1)).style.display = 'block';
      } else {
        $('room'+ (i+1)).style.display = 'none';
      }
    }
  }
</script>


<select name="rooms" onchange="adjustTexts(this);">
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
</select>

<div id="room1">
  <label>Room 1</label>:<input type="text" name="room1text"/>
</div>

<div id="room2" style="display:none;">
  <label>Room 2</label>:<input type="text" name="room2text"/>
</div>

<div id="room3" style="display:none;">
  <label>Room 3</label>:<input type="text" name="room3text"/>
</div>

<div id="room4" style="display:none;">
  <label>Room 4</label>:<input type="text" name="room4text"/>
</div>
1 голос
/ 09 ноября 2008

с учетом HTML:

<select name="rooms" id="rooms">
  <option value="1">1 room</option>
  <option value="2">2 rooms</option>
  <option value="3">3 rooms</option>
</select>
<div id="boxes"></div>

JavaScript:

document.getElementById('rooms').onchange = function() {
  var e = document.getElementById('boxes');
  var count = parseInt(document.getElementById('rooms').value);
  e.innerHTML = '';

  for(i = 1; i <= count; i++) {
    e.innerHTML += 'Room '+i+' <input type="text" name="room'+i+'" /><br />';
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...