|
|
|
| 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] + "> " + 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 в другом скрипте, если нужно, прикреплю и его. | |
|
|
|
|
|
|
|
для: elenaki
(18.08.2006 в 14:25)
| | Ну можно сделать так: пользователь
спокойно выделяет нужные пункты в селекте,
потом жмёт нарисованную кнопку
и происходит считывание значений из селекта
и отправка этих значений куда вам надо.
Значения можно читать в цикле по массиву options
конкретного селекта проверяя при этом свойство
selected каждого из элементов options и
сохранять всё в какой-нибудь переменной
которую потом и отсылать.
Можно конечно и по onkeyup всё запускать,
но это в том случае если предполагается, что пользователь
всегда будет выделять больше одного пункта в select. | |
|
|
|
|
|
|
|
для: 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] + "> " + data["item"]["keyw"][i] + "</td>";
if ((i+1)%2 == 0) keywords_table += "</tr>";
}
document.getElementById("subcat").innerHTML = keywords_table;
}
keywords_table += "</table>";
}
</script>
|
| |
|
|
|
|
|
|
|
для: elenaki
(18.08.2006 в 17:12)
| | Да, onChange реагирует на смену первого по счёту выбранного option. | |
|
|
|