Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > проблема со сравнением строк


Автор: Elerond 2.3.2010, 13:39
Доброго времени суток. 

Хочу сделать зависимые select на странице. php + javascript. Только с помощью php вроде сложновато без перезагрузки страницы

Собственно сама функция:

Код

<script>
  function selected_razdel() 
  { 
  x = document.getElementById("select_razdel");
  y = document.getElementById("select_pod_razdel");

if(x.value == "A")
{
y.length = 0;
el=document.createElement("OPTION");
y.options.add(el);
el.appendChild(document.createTextNode("Одиннадцатое"));
el.value="11";
el.selected = 'selected';

el=document.createElement("OPTION");
y.options.add(el);
el.appendChild(document.createTextNode("Двенадцатое"));
el.value="12";

}
} 
</script> 


Во втором select  пока смысла нет, просто для проверки.

Сам рабочий код:
Код

<?
$db_file_name = 'okved.dbf';        // имя базы данных
$db = dbase_open($db_file_name, 0); // открываем только для чтения
if ($db) {                          // если открыли
  echo 'Подключились <br /><br />';
  $record_numbers = dbase_numrecords($db); // количество записей
  // сделаем формы выбора
  echo '<select style="font-size:9" name="select_razdel" id="select_razdel" onChange="selected_razdel(this);">'."\n";
  echo '<option style="font-size:9" value="A">Cделайте выбор'."\n";
  for ($i = 1; $i <= $record_numbers; $i++) {
    $row = dbase_get_record_with_names($db, $i);
    if (preg_match("/^[A-Z] /", $row['KOD'])) {
      echo '<option style="font-size:9" valuе="'.preg_replace("/[^A-Z]/", "", $row['KOD']).'">'.$row['NAIM']."\n";
    }
  }
?>

</select>
<br><br><br><br>
<?
dbase_close($db);
} else {                          // если не открыли
  echo 'Не подключились <br />';
}
?>

<select name="select_pod_razdel" id="select_pod_razdel"> 
  <option value="0"> Сделайте выбор
</select> 


Специально отдельно сделал этот фрагмент (для проверки работоспособности):
Код

echo '<option style="font-size:9" value="A">Cделайте выбор'."\n";


Вообщем после выполнения вот что будет в html коде:
Код

<script>
  function selected_razdel() 
  { 
  x = document.getElementById("select_razdel");
  y = document.getElementById("select_pod_razdel");

if(x.value == "A")
{
y.length = 0;
el=document.createElement("OPTION");
y.options.add(el);
el.appendChild(document.createTextNode("Одиннадцатое"));
el.value="11";
el.selected = 'selected';

el=document.createElement("OPTION");
y.options.add(el);
el.appendChild(document.createTextNode("Двенадцатое"));
el.value="12";


}
  
} 
</script> 

Подключились <br /><br /><select style="font-size:9" name="select_razdel" id="select_razdel" onChange="selected_razdel(this);">

<option style="font-size:9" value="A">Cделайте выбор
<option style="font-size:9" valuе="A">РАЗДЕЛ А СЕЛЬСКОЕ ХОЗЯЙСТВО, ОХОТА И ЛЕСНОЕ ХОЗЯЙСТВО                                                                                                                                                                                                         
<option style="font-size:9" valuе="B">РАЗДЕЛ В РЫБОЛОВСТВО, РЫБОВОДСТВО                                                                                                                                                                                                                             
<option style="font-size:9" valuе="C">РАЗДЕЛ С ДОБЫЧА ПОЛЕЗНЫХ ИСКОПАЕМЫХ                                                                                                                                                                                                                           
<option style="font-size:9" valuе="D">РАЗДЕЛ D ОБРАБАТЫВАЮЩИЕ ПРОИЗВОДСТВА                                                                                                                                                                                                                          
<option style="font-size:9" valuе="E">РАЗДЕЛ Е ПРОИЗВОДСТВО И РАСПРЕДЕЛЕНИЕ ЭЛЕКТРОЭНЕРГИИ, ГАЗА И ВОДЫ                                                                                                                                                                                             
<option style="font-size:9" valuе="F">РАЗДЕЛ F СТРОИТЕЛЬСТВО                                                                                                                                                                                                                                        
<option style="font-size:9" valuе="G">РАЗДЕЛ G ОПТ.И РОЗНИЧ.ТОРГОВЛЯ;РЕМОНТ АВТОТРАНСП.СР.,МОТОЦИКЛ.,БЫТ.ИЗДЕЛИЙ                                                                                                                                                                                    
<option style="font-size:9" valuе="H">РАЗДЕЛ Н ГОСТИНИЦЫ И РЕСТОРАНЫ                                                                                                                                                                                                                                
<option style="font-size:9" valuе="I">РАЗДЕЛ I ТРАНСПОРТ И СВЯЗЬ                                                                                                                                                                                                                                    
<option style="font-size:9" valuе="J">РАЗДЕЛ J ФИНАНСОВАЯ ДЕЯТЕЛЬНОСТЬ                                                                                                                                                                                                                              
<option style="font-size:9" valuе="K">РАЗДЕЛ K ОПЕРАЦИИ С НЕДВИЖИМЫМ ИМУЩЕСТВОМ, АРЕНДА И ПРЕДОСТАВЛЕНИЕ УСЛУГ                                                                                                                                                                                      
<option style="font-size:9" valuе="L">РАЗДЕЛ L ГОС.УПРАВЛЕНИЕ И ОБЕСПЕЧ.,ВОЕННОЙ БЕЗОПАСНОСТИ; ОБЯЗАТ,СОЦ.ОБЕСПЕЧЕНИЕ                                                                                                                                                                               
<option style="font-size:9" valuе="M">РАЗДЕЛ M ОБРАЗОВАНИЕ                                                                                                                                                                                                                                          
<option style="font-size:9" valuе="N">РАЗДЕЛ N ЗДРАВООХРАНЕНИЕ И ПРЕДОСТАВЛЕНИЕ СОЦИАЛЬНЫХ УСЛУГ                                                                                                                                                                                                    
<option style="font-size:9" valuе="O">РАЗДЕЛ O ПРЕДОСТАВЛЕНИЕ ПРОЧИХ КОММУНАЛЬНЫХ, СОЦИАЛЬНЫХ И ПЕРСОНАЛЬНЫХ УСЛУГ                                                                                                                                                                                  
<option style="font-size:9" valuе="P">РАЗДЕЛ Р ПРЕДОСТАВЛЕНИЕ УСЛУГ ПО ВЕДЕНИЮ ДОМАШНЕГО ХОЗЯЙСТВА                                                                                                                                                                                                  

<option style="font-size:9" valuе="Q">РАЗДЕЛ Q ДЕЯТЕЛЬНОСТЬ ЭКСТЕРРИТОРИАЛЬНЫХ ОРГАНИЗАЦИЙ                                                                                                                                                                                                          

</select>
<br><br><br><br>

<select name="select_pod_razdel" id="select_pod_razdel"> 
  <option value="0"> Сделайте выбор
</select> 



Отсюда видно какие значения принимает value

Теперь собственно сама проблема: Если в первом select выбрать <option style="font-size:9" valuе="A">РАЗДЕЛ А СЕЛЬСКОЕ ХОЗЯЙСТВО, ОХОТА И ЛЕСНОЕ то во втором ни чего не измениться, а если <option style="font-size:9" value="A">Cделайте выбор  то второй селект измениться... не могу понять чем отличаются параметры "А" от "А"?

Автор: Elerond 2.3.2010, 14:10
Думал сначала что проблема в базе данных откуда беру значения но нет

написал вот так:

Код

    if (preg_match("/^[A-Z] /", $row['KOD'])) {
      //echo '<option style="font-size:9" valuе="'.preg_replace("/[^A-Z]/", "", $row['KOD']).'">'.$row['NAIM']."\n";
      echo '<option style="font-size:9" valuе="A"> наименование'."\n";

    }



Все равно не сравнивает... 

Автор: Amphiluke 2.3.2010, 14:14
Ну вы даете...  smile 
У вас во всех атрибутах value последняя буква набрана кириллицей...

Добавлено через 4 минуты и 28 секунд
Либо какая-то другая, не e, но какая-то точно не латиницей буква идет.

Автор: Elerond 2.3.2010, 14:20
Amphiluke,  smile  Спасибо ... Punto зло...

Добавлено через 1 минуту и 44 секунды
Кстати, а как заметили? Я что то разницы не вижу.... 

PS: Теперь все работает  smile 

Автор: Amphiluke 2.3.2010, 14:22
Да не, точно, e русская.

Цитата

Кстати, а как заметили? Я что то разницы не вижу.... 

Надо иногда пользоваться валидатором

Автор: Elerond 2.3.2010, 14:26
Amphiluke, e то действительно русская. Буду знать что надо не только "на глаз" ошибки искать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)