-
کار با رویداد onchange
سلام
من دو تا Combobox دارم که میخوام با تغییر مقادیر Combobox اول، مقادیر Combobox دوم هم تغییر کنه.
مثلا مقادیر Combobox یک تهران، گیلان، تبریز و ... هستند.
میخوام وقتی Combobox یک روی تهران بود، تو Combobox دو تهران، اسلام شهر، رباط کریم، ورامین و ... نمایش داده بشن.
وقتی روی گیلان بود، تو Combobox دو مقادیر رشت، انزلی، آستارا و ... نمایش داده بشن.
در ضمن این مقادیر (نام استان ها و همچنین شهر ها) توی دیتابیس من درج شده
و باید بعد از هر بار تغییر، داده های قبلی پاک بشه و داده های جدید از دیتابیس فراخونی بشه و به Combobox اضافه بشه.
من میخوام داخل رویداد onchange عنصر مورد نظر یک تابع فراخونی بشه و اینکارو انجام بده.(( با JavaScript باید تابع رو بنویسم یا خود php ؟؟؟ ))
چطوری اینکارو کنم؟
ممنون
-
سلام شما باید از AJAX استفاده کنید برات یک مثال میزنم امیدوارم استفاده کنید
فرض کن دوتا کمبو باکس به این شکل داری :
کد:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<select id="ostan">
<option value="" selected>Select a ostan:</option>
<option value="1">Tehran</option>
<option value="2">Mazandaran</option>
<option value="3">Khorasan</option>
<option value="4">Fars</option>
</select>
<br>
<select id="city">
</select>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
(function(){
$('#ostan').on('change', function(){
$.ajax({
type: 'POST',
url: 'coding.php',
data: {
ostan : $('#ostan').val()
},
success : function(result){
$('#city').html(result);
},
error: function(){
alert('error:ajax has errors.');
}
});
});
})();
</script>
</body>
</html>
اطلاعات بعد هربار change شدن میره به صفحه coding.php و اونجا هرجور میتونی باتوجه به اطلاعات فرستاده شده نتیجه رو بیاری داخل کمبو باکس دوم
کد:
<?php
if(isset($_POST['ostan'])){
switch ($_POST['ostan']) {
case '1':
echo '<option>Tehran</option>';
break;
case '2':
echo '<option>Sari</option>';
break;
case '3':
echo '<option>Mashhad</option>';
break;
case '4':
echo '<option>Shiraz</option>';
break;
}
}
من به صورت دستی کار کردم شما میتونید اطلاعات رو از دیتابیس بگیرین