2011-01-08 3 views
1

Итак, в основном у меня есть это меню выбора/выпадающего меню, которое я использую AJAX для извлечения и создания, но когда выбран параметр (так onChange), я хочу, чтобы он перенаправлялся!AJAX Generated Select не перенаправляет

Хотя это все еще не работает, я не получаю ошибок при попытке, и пытался использовать методы отладки alert(), но предупреждения не вызываются.

JQuery

$("#schoolMenu").change(function() { 
    option = $("#schoolMenu option:selected").text(); 

    alert(option); 

    if(option != "- Please Select -") { 
    window.location = "http://www.itmustbecollege.com/pics/pics-from-"+$("#schoolMenu option:selected").val(); 
    } 
    }); 

Это то, что используется для вызова AJAX

// // Populate школы //

$("#state").change(function() { 
    option = $("#state option:selected").text(); 

    if($(this).attr("class") == "menu") { 
    if(option != "- Please Select -") { 
    $.ajax({ 
    type: "GET", 
    url: "/includes/functions.php", 
    data: "f=school&p="+option+"&m=yes", 
    success: function(msg) { 
     $("#fSchool").html("<p style=\"margin-left: 20px;\">Select School:</p>"+ msg); 
     $("#fSchool").show(); 
     $("#school").focus(); 
    } 
    }); 
    } 
    else { 
    $("#fSchool").html(""); 
    $("#fSchool").hide(); 
    } 
    } 
    else { 
    if(option != "- Please Select -") { 
    $.ajax({ 
    type: "GET", 
    url: "/includes/functions.php", 
    data: "f=school&p="+option, 
    success: function(msg) { 
     $("#fSchool").html(msg); 
     $("#fSchool").show(); 
     $("#school").focus(); 
    } 
    }); 
    } 
    else { 
    $("#fSchool").html(""); 
    $("#fSchool").hide(); 
    } 
    } 
    }); 

Он загружает отлично, если вы смотрите на http://www.itmustbecollege.com/quotes/ на том баре, где вы можете «сортировать по» популярного | Новые | Категория | Школа

Если вы наведите курсор мыши на школу, появится раскрывающееся меню, выберите любую страну, а другая появится, хотя когда это изменится, ничего не происходит.

здесь является PHP для этого второго выпадающего

// Get College List 
function getCollege($state, $m = "no", $l = "no") { 

// Displays Schools 
if($m == "yes") { 
$options = '<select id="schoolMenu" name="school"><option value="select" selected="selected">- Please Select -</option>'; 
} 
else if($l == "yes" || $l == "yes2") { 
$options = ''; 
} 
else { 
$options = '<select name="school"><option value="select" selected="selected">- Please Select -</option>'; 
} 

$listArray = split("\|\\\\", $list); 

for($i=0; $i < count($listArray); $i++) { 

if($m == "yes") { 
    $options .= '<option value="'. trim(titleReplace($listArray[$i])) .'">'. trim($listArray[$i]) .'</option>'; 
} 
else if($l == "yes") { 
    $options .= '<li><a href="/quotes/quotes-from-'. titleReplace($listArray[$i]) .'" title="'. trim($listArray[$i]) .' Quotes">'. trim($listArray[$i]) .'</a></li>'; 

} 
else if($l == "yes2") { 
    $options .= '<li><a href="/pics/pics-from-'. titleReplace($listArray[$i]) .'" title="'. trim($listArray[$i]) .' Pictures">'. trim($listArray[$i]) .'</a></li>'; 

} 
else { 
    $options .= '<option value="'. trim($listArray[$i]) .'">'. trim($listArray[$i]) .'</option>'; 
} 
} 

echo $options .='</select>'; 
return false; 
} 

любая помощь будет здорово!

РЕДАКТИРОВАТЬ: Кроме того, у меня есть эти выпадающие меню, немного странные, и когда вы наводите курсор на любую другую ссылку «сортировать по», они исчезают, это проблема с «сортировкой по школе», потому что в первом окне выбора отображается список вверх, и если вы идете и выбираете школу, то каким-то образом плаваете по другой ссылке, которая исчезает, любая помощь в том, как отложить это или исправить эту небольшую проблему?

ответ

1

Это потому, что элемент #schoolMenu отсутствует, когда страница загружается, поэтому вы не выполняете задание .change().

Вы можете назначить его по прибытии.

var fSchool = $("#fSchool").html("<p style=\"margin-left: 20px;\">Select School:</p>"+ msg); 

fSchool.find("#schoolMenu").change(function() { 
    option = $(this).find("option:selected").text(); 

    alert(option); 

    if(option != "- Please Select -") { 
    window.location = "http://www.itmustbecollege.com/pics/pics-from-"+$("#schoolMenu option:selected").val(); 
    } 
}); 

fSchool.show(); 

Обратите внимание, что я кэшируюсь $("#fSchool") в переменной fSchool, вместо того, чтобы повторно выбрав его из DOM.

А внутри .change() обработчика, я ссылаться на элемент, который получил это событие, используя this вместо "#schoolMenu", еще раз, чтобы избежать повторного выбора DOM.

+0

Живой или делегат не работает в этом случае? –

+1

@Caspar: Хороший вопрос. Кажется, что это работает, но в любом случае, поскольку это специальный обработчик, предназначенный для одного конкретного элемента, я лично предпочел бы привязывать его напрямую. – user113716

Смежные вопросы