Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удалить содержимое
 
 автор: Richard Ferlow   (21.06.2009 в 12:56)   письмо автору
 
 

Такой вот код генерирует Jquery


<input id="cities" type="hidden" name="cities" value="55750" style="visibility: visible;">
<option value="0">---не выбрано---</option>
<option value="55750">Анапа</option>
<option value="55596">Армавир</option>
</input>
<input id="cities_f1lexselect" class="f1lexselect" type="text" autocomplete="off" tabindex="0" style="width: 280px; z-index: 1;"/>


Собственно вопрос, как можно удалить вот эту часть

<input id="cities" type="hidden" name="cities" value="55750" style="visibility: visible;">
<option value="0">---не выбрано---</option>
<option value="55750">Анапа</option>
<option value="55596">Армавир</option>
</input>


Средствами JS ?

Просто этот список динамически подгружается, а если его не очистить, то он просто дополняется

  Ответить  
 
 автор: PAT   (21.06.2009 в 13:18)   письмо автору
 
   для: Richard Ferlow   (21.06.2009 в 12:56)
 

Мей би, не <input id="cities", а <select id="cities" ?

По-любому, закрывающего </input> не бывает. Браузеры эту вашу строку просто игнорируют.

  Ответить  
 
 автор: Richard Ferlow   (21.06.2009 в 13:28)   письмо автору
 
   для: PAT   (21.06.2009 в 13:18)
 

Там все дело в том, что из select в input трансформируется.

Получается строка ввода с предлагаемыми вариантами

  Ответить  
 
 автор: Richard Ferlow   (21.06.2009 в 13:32)   письмо автору
 
   для: Richard Ferlow   (21.06.2009 в 13:28)
 

Как удалить придумал, однако дальше не помогает это)

  Ответить  
 
 автор: PAT   (21.06.2009 в 13:39)   письмо автору
 
   для: Richard Ferlow   (21.06.2009 в 13:28)
 

>"из select в input трансформируется"

Это я понял (ваш сайт ПЭК видел).
Трансформируется ВИЗУАЛЬНО.
А в коде в ЛЮБОЙ МОМЕНТ ВРЕМЕНИ должно быть или <INPUT>, или <SELECT><OPTION>...</SELECT>.

Если у вас иначе, т.е. ОДНОМОМЕНТНО есть теги <OPTION> внутри тегов <INPUT> и </INPUT>,
то это, извините, - полный бред.

В общем, если вам надо удалить опшены из нормального тега <SELECT>, то смотрите
реализацию такого удаления здесь - первая строка функции formSecSel ()
удаляет ВСЕ имеющиеся опшены из существующего тега <SELECT>.
Обратите внимание на параметры цикла - удаляются опшены не с нулевого по последний,
а наоборот - с последнего до нулевого. Это важно - ибо в процессе удаления "длина" коллекции
опшенов уменьшается.

PS. А по сути никакой "трансформации" не требуется.
Нужен ВСЕГДА визуально видимый <INPUT> с атрибутом NAME,
а также ВСЕГДА имеющийся на странице <SELECT> без атрибута NAME
(чтобы не отсылать его данные по сабмиту),
видимость которого будет в нужные моменты "включаться/выключаться"
с одновременным "удалением/прописыванием" в нём опшенов.

  Ответить  
 
 автор: Richard Ferlow   (21.06.2009 в 13:53)   письмо автору
 
   для: PAT   (21.06.2009 в 13:39)
 

Ах вот оно что, а я сижу не то мучаю, тогда ясно.

Так, тогда пытаюсь так

for (var q = document.getElementById ('cities'), j = q.options.length - 1; j >= 0; j--) q.options [j] = null;

Возвращает TypeError: q.options is undefined

Хотя вот таким скриптом список дополняется:

    for(i=0;i<cities.length;i++){ 
        var option = document.createElement("option");
        var optionText = document.createTextNode(cities[i].firstChild.data);
        option.appendChild(optionText);
        option.setAttribute("value",cities[i].getAttribute("value"));
        _select.appendChild(option);
    }


Не могу в общем понять, почему в первом случае не видит cities, а во втором исполняет _select.appendChild(option);

  Ответить  
 
 автор: PAT   (21.06.2009 в 14:21)   письмо автору
 
   для: Richard Ferlow   (21.06.2009 в 13:53)
 

>"Возвращает TypeError: q.options is undefined"

А вы перед вашей строкой поместите тестовый алерт, вот так:
alert (document.getElementById ('cities').tagName);
for (var q = document.getElementById ('cities'), j = q.options.length - 1; j >= 0; j--) q.options [j] = null;

Если алерт покажет вам INPUT, то тогда сообщение ошибки вполне РАЗУМНО - у тега <INPUT> не может быть коллекции опшенов.

---

>"Не могу в общем понять, почему в первом случае не видит cities, а во втором исполняет _select.appendChild(option);"

Дело в том, что добавлять новые теги <OPTION> (и не только их, а и практически любые теги) методом appendChild () можно КУДА УГОДНО -
хоть прямо в тег <BODY>, хоть в тег <TEXTAREA>,... в общем - КУДА УГОДНО.
И всё БУДЕТ работать при добавлении :-)
Но вот потом "достучаться" до этих добавленных опшенов будет трудно, ибо РЕАЛЬНО
коллекция options бывает только у тега <SELECT>.

Пример ПРАВИЛЬНОЙ (но в тоже время БЕССМЫСЛЕННОЙ) работы метода appendChild ():
<script>
function f (x)
{
var lnk = document.createElement ('A');
lnk.href = 'http://google.com';
lnk.innerHTML = 'ГУГЛЬ';
document.getElementById ('myLink').appendChild (lnk);
x.disabled = true;
}
</script>

<span id="test"><a id="myLink" href="http://yandex.ru">ЯНДЕКС</a></span>
<hr>
<input type="button" value="Добавить ссылку на Гугль" onclick="f (this)">
<input type="button" value="Посмотреть HTML-код ссылки" onclick="alert (document.getElementById ('test').innerHTML)">

Вот если бы вы использовали метод add () для добавления опшенов (а он работает только для трёх коллекций: areas, controlRange, options), то вот тогда вашу ошибку вы увидели бы СРАЗУ - ничего бы просто не добавлялось.

Реализацию добавления новых опшенов в нормальный <SELECT> единственно ПРАВИЛЬНЫМ методом add () смотрите по указанной ссылке (следующие строки той же функции).

  Ответить  
 
 автор: Richard Ferlow   (21.06.2009 в 14:44)   письмо автору
 
   для: PAT   (21.06.2009 в 14:21)
 

Спасибо за разъяснения.

В JS я не силен пока нисколько. Вот путем проб и ошибок изучаю...а тем более когда нужно позарез и быстро.

Сделал кое как - однако работает.

через InnerHTML очищаю все ненужно, вставляю через него же тот же Select и к нему опять Jquery применяю.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования