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

HTML+CSS+JavaScript

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

 

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

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

тема: onChange в select'e не работает, если есть параметр multiple?
 
 автор: elenaki   (18.08.2006 в 14:25)   письмо автору
 
 

onChange в select'e не работает, если есть параметр multiple? что делать? a так хорошо было
выбирать ключевые слова AJAX'ом из нужной категории... выводить несколько select'ов?
только сначала, наверно, спросить, хочет ли юзер? и выводить новые select'ы придется
AJAX'ом, а то над ними уже куча полей заполнена... а как было бы хорошо, если б можно было
в одном select'e выбрать несколько категорий, a AJAX бы выдал ключевые слова из них из
ВСЕХ вместе. а если сделать не select, а набор чек-боксов? а как тогда передавать данные
о выбранных категориях на обработку AJAX'y? разве что кнопку дополнительную...

тогда вопрос - как передать значения выбранных чек-боксов? форма не кончается, после
чек-боксов с кл.словами есть еще поля. хочу по ссылке или по кнопке передать на AJAX те
категории, из которых надо выводить ключевые слова.

это список категорий в select'e:

<tr bgcolor="EEF5F7">  
      <td align="right">New Category: <span class="red_text">*</span></td>
      <td><select name="categ" class="input"  style="font-size: 10;" onchange="sendReq(this.options[this.selectedIndex].value)" multiple>
    <option value="-1">Select Category</option>
        <? $find_cats_query mysql_query("select id, main_category_".strtolower($interface_lang)." as cat_name from company_categories") or die (mysql_error());

        while(
$cats mysql_fetch_array($find_cats_query)){
        
$cat_name $cats['cat_name'];
        
$cat_id $cats['id'];
        
?>        <option value="<?=$cat_id;?>"><?=$cat_name;?></option>
        <?}?>
        </select>
        </td>
    </tr>


это обработчик события onChange (ключевые слова не меняются, поэтому они у меня в XML):


<script type="text/javascript">
function sendReq(arg1, arg2) {
   var url = '../xml/' + arg1 + '_keywds_<?=strtolower($interface_lang)?>.xml';
   var xml = new JKL.ParseXML(url);
   var data = xml.parse();        
            keywords_table = "<table border=0 class=sm_text><tr>";
                    
            for (i=0; i< (data["item"]["keyw"].length); i++) {
            
            keywords_table += "<td><input type=checkbox name=keyword[] value=" + data["item"]["key_id"][i] + ">&nbsp;" + data["item"]["keyw"][i] + "</td>";
            if ((i+1)%2 == 0)     keywords_table += "</tr>"; 
            }
            keywords_table += "</table>";
            
        document.getElementById("subcat").innerHTML = keywords_table;    
}
</script>


XML-parser в другом скрипте, если нужно, прикреплю и его.

   
 
 автор: RMW   (18.08.2006 в 15:42)   письмо автору
 
   для: elenaki   (18.08.2006 в 14:25)
 

Ну можно сделать так: пользователь
спокойно выделяет нужные пункты в селекте,
потом жмёт нарисованную кнопку
и происходит считывание значений из селекта
и отправка этих значений куда вам надо.
Значения можно читать в цикле по массиву options
конкретного селекта проверяя при этом свойство
selected каждого из элементов options и
сохранять всё в какой-нибудь переменной
которую потом и отсылать.
Можно конечно и по onkeyup всё запускать,
но это в том случае если предполагается, что пользователь
всегда будет выделять больше одного пункта в select.

   
 
 автор: elenaki   (18.08.2006 в 17:12)   письмо автору
 
   для: RMW   (18.08.2006 в 15:42)
 

огромное спасибо за подсказку! решила проблему со множественным выбором. немного
по-другому, но решила. первым делом выбираем все элементы seletc'a. потом проверяем,
выбран ли он. если выбран, тут же делаем запрос AJAX'ом и получаем ответ. берем след.
элемент. на выходе получаем таблицу, сформированную из всех ключевых слов выбранных
категорий. вот код, если кому интересно.


<script type="text/javascript">
   function getSelected(opt) {
      var selected = new Array();
      var index = 0;
      for (var intLoop=0; intLoop < opt.length; intLoop++) {
         if (opt[intLoop].selected) {
            index = selected.length;
            selected[index] = new Object;
            selected[index].value = opt[intLoop].value;
            selected[index].index = intLoop;
         }
      }
      return selected;
   }

   function outputSelected(opt) {
            var sel = getSelected(opt);
            var strSel = "";
            
            keywords_table = "<table border=0 class=sm_text><tr>";
            for (var item in sel)  {     
                    
             var url = '../xml/' + sel[item].value + '_keywds_<?=strtolower($interface_lang)?>.xml';
                var xml = new JKL.ParseXML(url);
             var data = xml.parse();    
                             
            for (i=0; i< (data["item"]["keyw"].length); i++) {
            
            keywords_table += "<td><input type=checkbox name=keyword[] value=" + data["item"]["key_id"][i] + ">&nbsp;" + data["item"]["keyw"][i] + "</td>";
            if ((i+1)%2 == 0)     keywords_table += "</tr>"; 
            }
            
            
        document.getElementById("subcat").innerHTML = keywords_table;    
            
            
         }
         keywords_table += "</table>";
}         

</script>

   
 
 автор: 12345   (18.08.2006 в 17:47)   письмо автору
 
   для: elenaki   (18.08.2006 в 17:12)
 

Да, onChange реагирует на смену первого по счёту выбранного option.

   
Rambler's Top100
вверх

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