Динамические select'ы (AJAX)

DE
На сайте с 14.06.2007
Offline
28
1265

Есть отличный код для динамического вывода данных select'ов с без перезагрузки.

Код используется для поиска объектов. Все прекрасно работает, НО хоть убейте не могу понять как сделать, чтобы при показе результатов поиска в select'ы автоматически показывались (selected) выбраные ранее опшены..

<script language=Javascript>


function Inint_AJAX() {
try { return new ActiveXObject(\"Msxml2.XMLHTTP\"); } catch(e) {} //IE
try { return new ActiveXObject(\"Microsoft.XMLHTTP\"); } catch(e) {} //IE
try { return new XMLHttpRequest(); } catch(e) {} //Native Javascript
alert(\"XMLHttpRequest not supported\");
return null;
};

function dochange(src, val) {
var req = Inint_AJAX();
req.onreadystatechange = function () {
if (req.readyState==4) {
if (req.status==200) {
document.getElementById(src).innerHTML=req.responseText; //
}
}
};
req.open(\"GET\", \"/js/location/locale_ofc.php?data=\"+src+\"&val=\"+val); //
req.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded;charset=windows-1251\"); // set Header
req.send(null); //
}

window.onLoad=dochange('region', -1, ".$srchPat[0].", ".$srchPat[2].");
</script>

<font id=region><select name='region' id='region'>
<option value=''>Не важно</option>
</select></font></td>

<font id=district><select name='district' id='district'>
<option value=''>Не важно</option>
</select></font>

<font id=metro><select name='metro' id='metro'>
<option value=''>Не важно</option>
</select></font>


//
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
header("content-type: application/x-javascript; charset=windows-1251");
$data=$_GET['data'];
$val=$_GET['val'];

//
$dbhost = "localhost";
$dbuser = "xxxxx";
$dbpass = "xxxxx";
$dbname = "xxxxx";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");
if ($data=='region') {
echo "<select name='region' onChange=\"dochange('district', this.value), dochange('metro', this.value), dochange('name', this.value)\">\n";
echo "<option value=''>-----Выбрать-----</option>\n";
$result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_comment LIKE 'reg' order by location_name");
while(list($id, $name)=mysql_fetch_array($result)){
echo "<option value=\"$id\">$name</option> \n" ;
}
}

if ($data=='district') {
echo "<select name='district'>\n";
echo "<option value=''>-----Выбрать-----</option>\n";
$val2=$val;
$val = substr($val,0,6);
$result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_ID != '$val2' AND location_ID LIKE '$val%' AND location_comment LIKE 'disreg' ORDER BY location_name");
while(list($id, $name)=mysql_fetch_array($result)){
if ($id==$sel2){
echo "<option value=\"$id\">$name</option> \n" ;
}
}



else if ($data=='metro') {
echo "<select name='metro'>\n";
echo "<option value=''>-----Выбрать-----</option>\n";
$val2=$val;
$val = substr($val,0,6);
$result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_ID != '$val2' AND location_ID LIKE '$val%' AND location_comment LIKE 'met' ORDER BY location_name");
while(list($ID, $name)=mysql_fetch_array($result)){
echo "<option value=\"$ID\">$name</option> \n" ;
}
}
echo "</select>\n";

bazetov
На сайте с 04.04.2008
Offline
7
#1
DoniE:

Код используется для поиска объектов. Все прекрасно работает, НО хоть убейте не могу понять как сделать, чтобы при показе результатов поиска в select'ы автоматически показывались (selected) выбраные ранее опшены..

У выбранной опции надо установить значение атрибута selected="selected".

[Удален]
#2

ну да, нужно при генерации optionов проверять если значение равно переданному из строки, то ставить у данной option селектед

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий