здравствуйте, возможно вы сможете помочь разобраться. Не так давно начал познавать php, но тут уперся в javascript, и собственно поплохело. Код (Text): <script> var auto; var gr = document.getElementsByName('checkbox1'); window.onclick = function() { for(var i=0; i<gr.length; i++) if (gr[i].checked) { auto = 'autocomplete2.php'; } else { alert( auto ); } } $(document).ready(function(){ $('#search_notice').autocomplete( auto , { selectFirst: true }); }); </script>"; ?> Поясню задачу, на страничке вводится строка в #search_notice затем передается для обработки на php обработчик (был autocomplete.php но необходимо делать селект из нескольких фалов, для этого создал переменную auto куда собственно и будем кидать имя обработчика). Но к сожалению этот фрагмент не отрабатывает Код (Text): ($('#search_notice').autocomplete( auto , { selectFirst: true });), хотя в переменную обработчик заносится, возможно необходимо экранировать как то переменную, в автокомплите. Вид элементов При выборе одного чекбокса автозаполнение должно использовать autocomplete.php при выборе другого - другой. Заранее прошу прощения за возможные глупые ошибки. Если будут советы по иному выполнению задачи с радостью выслушаю
А что, по-вашему должен делать этот фрагмент? Какую логику вы пытались в нем реализовать? Добавлено спустя 2 минуты 23 секунды: Далее, вы в курсе, что чекбоксы - это логические элементы, позволяющие делать выбор многого из многих? Если сразу два чекбокса выделены, что делать? Вам, раз на то пошло, нужны radiobutton-ы. Добавлено спустя 1 минуту 41 секунду: Но сначала ответьте на первый вопрос. Это очень интересно.
Признаюсь положа руку на сердце, фрагмент был использован из примера, целью которого было выявление изменения состояния чекбоксов и его индикация. По моим же соображениям данный фрагмент должен проверять состояние чекбокса и заносить значение в переменную , собственно значение которой мы сможем применить ниже, для формирования запроса к нужному обработчику. Насчет радиобаттон все верно, их было бы использовать целесообразней, но хотелось бы рассмотреть и вариант одновременного использования(несколько выбранных комбенаций), но боюсь для этого нужно переделовать скрипт обработки. п.с. огромное спасибо за адекватный подход Добавлено спустя 7 минут 58 секунд: если же без лишних слов и следую логике: window.onclick = function() { - по клику for(var i=0; i<gr.length; i++) - этот фрагмент не понял, но похоже на цикл для выборки всех переменных объектов чекбокс приведенных в переменных gr* if (gr.checked) { - если элемент gr* выделен auto = 'autocomplete2.php'; -присваиваем переменной авто текст 'autocomplete2.php' } else { alert( auto ); - заглушка для проверки состояния унчекд } }
А теперь я опишу, что в этом коде написано: Код (PHP): window.onclick = function() { //(!!!)Всему вьюпорту(!!!) на событие "клик мышкой" вешаем обработчик for(var i=0; i<gr.length; i++) //В котором идем по всем элементам с name, равным сheckbox1, которые не обязательно вообще являются чекбоксами, так на всякий if (gr[i].checked) { //если у элемента есть аттрибут checked и он равен true, то auto = 'autocomplete2.php'; //В переменную auto заносим autocomplete2.php И ТОЛЬКО ЕГО. Какой бы чекбокс не был отмечен, в переменную auto попадет строго autocomplete2.php, и никак иначе. } else { //В противном же случае alert( auto ); //Выводим на экран содержимое auto, которое вообще может и не существовать. }// И так для каждой итерации } А теперь сравните с тем, как вы себе это представляли, и подумайте, действительно ли проблема в том, что:
Заранее прошу прощения за потенциальную глупость, но в коде есть масса недоработок, но мене собственно не дает покоя момент Код (Text): ($('#search_notice').autocomplete( auto , { selectFirst: true });), так как в alert( auto ) мы получаем значения переменной, а в ($('#search_notice').autocomplete( auto , { selectFirst: true }), данное значение не не применяется, ну либо не хватает ума проверить этот момент. На самом деле все это можно назвать попыткой уйти от теории к практике, что выглядит весьма удручающе, так как фундамента нет.
А теперь код формы в студию. Добавлено спустя 49 секунд: Что мешает сначала попытаться выучить язык, а потом пользоваться?
Дело в том что основная масса реализаций уже готова, на php, это так сказать стартовая оплошность так как с помощью js можно было все сделать "красивее" и "легче", php был "понят" на примерах, с js видимо будет сложнее. Если под формой подразумевается обработчик события то вот: Код (Text): <?php include 'conf.php'; $q=$_GET['q']; $my_data=mysql_real_escape_string($q); $sql = mysql_query("SELECT drug_name FROM drugs WHERE drug_name LIKE '%$my_data%' ORDER BY drug_name"); if($sql) { while($row=mysql_fetch_array($sql)) { echo $row['drug_name']."\n"; } } ?> п.с. похоже я свою ошибку понял, проверка чекбоксов на изменение состояния проходит циклически, видимо до передачи в обработчик попросту дело не доходит. Огромное спасибо за терпение, и очень прошу посоветовать литературу по js, по доступнее.
Код (Text): <script> function check(){ var rarr=document.getElementsByName('radio_search'); var auto; if(rarr[0].checked){ auto = 'autocomplete.php'; } else { auto = 'autocomplete2.php'; } $(document).ready(function(){ $('#search_notice').autocomplete( auto , { selectFirst: true }); }); } </script> Решил вопрос обратившись к радиобатон-ам
Под формой подразумевается Html-форма. Броу, у тебя даже с базовой терминологией, даже в рамках HTML проблемы. Рановато ты за кодинг взялся, и тем более за JS. И да, JS по примерам ты не поймешь, это не самый очевидный язык. Плюс, чтобы его понять, нужно знать, что такое замыкания, что такое контекст выполнения и еще кучу страшных слов.
Насчет страшных слов все верно, действительно страшно. Что поделать, попросили выполнить "кривокосо" задачу, бюджета нет, предложено было обратится к профессионалам области, но нет. Так что хозяин - барин, как можем так и лепим. Если можно посоветуйте литературу по JS Код формы Код (Text): echo "<form action=\"\" method=\"post\" name=\"amb_card\">\n"; echo "<table class=\"table_main\" border=\"2\" cellpadding=\"2\" cellspacing=\"2\">\n"; echo "</tr><tr>\n"; echo "<td class=\"td_main\" bgcolor=\"white\" colspan=\"2\" align=\"left\">{$langdata['inform_massege']}<red>$mess</red></td></td>\n"; echo "</tr><tr>\n"; echo "<td class=\"td_main\"> {$langdata['patient_id_label']} <input class=\"input_search\" type=\"text\" disabled=\"disabled\" value=\"".$patientdata['patient_fam']." ".$patientdata['patient_name']." ".$patientdata['patient_lname']." ".$patientdata['patient_birth_date']."\" name=\"patient_id\" /></td>"; echo "</tr><tr>\n"; echo "<td class=\"td_main\"> <input type=\"radio\" name=\"radio_search\" value=\"l\" onchange=\"check()\">Диагнозы <input type=\"radio\" name=\"radio_search\" value=\"2\" onchange=\"check()\">Анамнезы {$langdata['patient_id_label']} <input class=\"input_search\" type=\"text\" id=\"search_notice\" name=\"search_notice\" /></td>"; echo "</tr><tr>\n"; echo "<td align=\"center\"> <input type=\"submit\" onclick =\"document.getElementById('notice_enter').value = document.getElementById('notice_enter').value + ' ' +document.getElementById('search_notice').value; return !1;\" name=\"add_notice_button\" class=\"buttons\" value=\"{$langdata['add_notice_button']}\" /> <input id=\"my-div\" align=\"middle\"type=\"submit\" onclick =\"return confirm('{$langdata['save_notice_confirm']}')\" name=\"save_notice_button\" class=\"buttons\" value=\"{$langdata['save_notice_button']}\" /> <input id=\"my-div\" align=\"middle\"type=\"submit\" onclick =\"return confirm('{$langdata['save_templ_confirm']}')\" name=\"save_templ_button\" class=\"buttons\" value=\"{$langdata['save_templ_button']}\" /></td>"; echo "</tr><tr>\n"; echo "<td class=\"td_main\"><textarea class=\"textarea_main\" align=\"center\" id=\"notice_enter\" name=\"notice_enter\" value=\"\">{$templ['templ_text']}</textarea></td>"; echo "</tr><tr>\n"; echo "</tr></table></form>\n\n";
Святые макароны... Это не код, это каша. Автор, все очень плохо. Просто сказочная каша. https://learn.javascript.ru/tutorial