На PHP сделал все быстро все работает, по такому принципу
1. Появляется первый список и кнопка выбрал,
2. по нажатию происходит проверка переданных данных
3. Появляется тоже список с уже выбранным элементов в заблокированном состоянии, и второй список список где пользователь выбирает то что ему нужно.
На Javascript планировалось так
1. Появляется все списки сразу но активен только 1 choose_razdel
2. Если поддержка Javascript включена то,
$(document).ready(function(){
$(".sub_raz").hide();//скрываем кнопку
$("<br /><br /><select name='choose_part' id='choose_part' class='choose_part'><option value='default' name='chP' selected>Выберите категорию</option></select><br /><br /><textarea name='smsText' cols='40' rows='10' class='smsText' wrap='hard' disabled></textarea><br /><br /><input name='postToemail' type='checkbox' class='postToemail' value='1' disabled/> <label for='postToemail'>Уведомить по e-mail о результатах проверки модератора </label><br /><br /><input name='sub_part' type='submit' value='Сохранить SMS' disabled/>").insertAfter(".choose_razdel");
//вставляем всю форму после 1 списка
$(".choose_razdel").change(function(){
//при изменение выбора
var razdelValue = $('.choose_razdel').val();
var part = $('.choose_part');
if (razdelValue == 'default'){
//если выбрано значение пл умолчанию
var option = new Option("Выберите раздел","default");
if($.support.cssFloat) {
part.add(option,null);
} else {
part.add(option);
}
part.attr('disabled','disabled');
}
//если выбрано значение отлично от умочания
if(razdelValue.length != 0 && razdelValue != 'default') {
part.attr('disabled','');
part.options.length = 0;
$.getJSON("ajax.php",{razdel:razdelValue},
function(dataArray,status) {
if (status == 'error') {
$('#otvet').html("Ошибка при загрузке");
}
if (status == 'success') {
$('#otvet').html("Данные получены");
}
$.each(dataArray,function(index,data){
var option = new Option(data,index);
//просто проверяем что значения получены и могут быть прочитаны
alert(data+' '+index);
if($.support.cssFloat) {
part.add(option,null);
} else {
part.add(option);
}
});
});
}
});
});
Код PHP не сколько запутан из-за того что сайт в 1251 кодировке, а ajax работает только с UTF-8
<?php
include_once "connect_db.php";
include_once "auth/quote_smart.php";
header('Content-Type: text/html; charset=utf-8');
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
exit('Данные отправлены не через AJAX');
}
if (isset($_REQUEST['razdel'])){
echo show_part();
} else {
echo json_encode('Данные не получены');
}
function show_part(){
$choose_razdel=$_REQUEST['razdel'];
$choose_razdel = iconv("UTF-8","windows-1251", $choose_razdel);
$result21 = mysql_query("SELECT DISTINCT part,rus_trans FROM title WHERE rus_raz='$choose_razdel'"); //,
$myrow21 = mysql_fetch_array($result21);
do
{
$rus_trans[$myrow21['part']] = preg_replace("/( \d)$/","",$myrow21['rus_trans']);
$rus_trans = array_unique($rus_trans);
}
while ($myrow21 = mysql_fetch_array($result21));
$out[iconv("windows-1251", "UTF-8",'default')]= iconv("windows-1251", "UTF-8",'Выберите категорию');
foreach($rus_trans as $key=>$value){
$out[iconv("windows-1251", "UTF-8",$value)]= iconv("windows-1251", "UTF-8",$key);
}
$out=json_encode($out);
return $out;
}
?>
В alert(data+' '+index);
получаю в дата текст элемента, а в index value элемента,
но элемент option не хочет создаваться.
Выше где пишу
var option = new Option("Выберите раздел","default");
элемент появляется нормально.
Бьюсь с этим уже 3 дня сделал, через load селектор $('.choose_part')
но так не работает по IE причем ни в 7 ни в 8 ни в 9.
Для этого на сервере готовил разметку уже содержащею теги Option
Код через Load
$(document).ready(function(){
$(".sub_raz").hide();
$("<br /><br /><select name='choose_part' id='choose_part' class='choose_part' disabled><option value='default' name='chP' selected>Выберите категорию</option></select><br /><br /><textarea name='smsText' cols='40' rows='10' class='smsText' wrap='hard' disabled></textarea><br /><br /><input name='postToemail' type='checkbox' class='postToemail' value='1' disabled/> <label for='postToemail'>Уведомить по e-mail о результатах проверки модератора </label><br /><br /><input name='sub_part' type='submit' value='Сохранить SMS' disabled/>").insertAfter(".choose_razdel");
$(".choose_razdel").change(function(){
var razdelValue = $('.choose_razdel').val();
var part = $('.choose_part');
if (razdelValue == 'default'){
razdelValue='';
part.html('<option value="default" name="chR" id="firstIL" selected>Выберите раздел</option>"').attr('disabled','disabled');
}
if(razdelValue.length != 0 && razdelValue != 'default') {
/* part.load("ajax.php",{razdel: razdelValue},
function (data, status){
if (status == 'error') {
$(this).html("Ошибка при загрузке");
}
})*/
$.post("ajax.php",{razdel: razdelValue},
function (data, status){
if (status == 'error') {
$(this).html("Ошибка при загрузке");
}
/*part*/$('#otvet').html(data)
})
part.attr('disabled','');
}
});
});
там где за комментировано, делал через лоад потом через post.
Результат тот же под IE не работает.
Помогите разобраться.