PDA

View Full Version : تغییر محتویات Select با JavaScript



Blackk_lightt
چهارشنبه 13 شهریور 1387, 18:18 عصر
سلام
من تقریبا از جاوا اسکریپت هیچی بلد نیستم.اگه ممکنه دوستان منو راهنمایی کنند
میخوlم یه کد بنویسم برای رویداد onChange یه Select تا نسبت به انتخاب کاربر در select اول select دوم تغییر کنه
حالا من چه جوری میتونم بفهمم تو select اول چی انتخاب شده و به select دوم Item اضافه کنم ؟

Lagon666
چهارشنبه 13 شهریور 1387, 18:58 عصر
اگر درست فهمیده باشم، منظورت اینه (http://barnamenevis.org/forum/showthread.php?t=118351).


http://barnamenevis.org/forum/showthread.php?t=118351

Blackk_lightt
چهارشنبه 13 شهریور 1387, 20:47 عصر
سلام
آقای Lagon666 خیلی مچکرم
مثال خوبی بود و مشگل من رو حل کرد
من از این کد استفاده کردم


function SetStates(States) {
var stateBox = document.getElementById("state");
stateBox.options.length = 0;
if(States != "") {
var arrStates = States.split(",");
for(i = 0; i < arrStates.length; i++) {
if(arrStates[i] != "") {
stateBox.options[stateBox.options.length]=new Option(arrStates[i]);
}
}
}
}

الان یه مشگل دیگه پیش اومد
این Select ها باید تو بانک ذخیره بشند
ولی به سرور پست نمیشه
باید چیکار کنم ؟

Lagon666
چهارشنبه 13 شهریور 1387, 22:32 عصر
اگر کدتون رو ببینیم فکر می کنم بتونیم بیشتر کمکتون کنیم.

اما چیز هایی که به نظرم میان اینا هستن:
id و name های select هارو چک کن.
ببین اصلا توی form هستن یا نه.

Blackk_lightt
چهارشنبه 13 شهریور 1387, 23:27 عصر
سلام
تا اونجایی که اطلاعات ناقص من میگه کنترل های HTML به Server فرستاده نمیشن
این کدمه :


<html>
<head>
<script>
function SetStates(States) {
var stateBox = document.getElementById("state");
stateBox.options.length = 0;
if(States != "") {
var arrStates = States.split(",");
for(i = 0; i < arrStates.length; i++) {
if(arrStates[i] != "") {
stateBox.options[stateBox.options.length] = new Option(arrStates[i], arrStates[i]);
}
}
}
}
</script>
</head>
<body>
<pre>Country:
<select onChange="SetStates(this.value)" id="country">
<option value=""></option>
<option value="New South Wales,Queensland,Victoria,South Australia,Tasmania,Western Australia,Northern Territory">Australia</option>
<option value="California,New York,Ohio,Colorado,Florida,Texas,Arizona,Washingto n">USA</option>
</select><br>State: <select id="state"></select>
</pre>
</body>
</html>

من چه جوری می تونم گزینه ای که کاربر انتخاب کرده تو بانک ذخیره کنم ؟(تو ASP.NET)

Lagon666
پنج شنبه 14 شهریور 1387, 05:32 صبح
مشکل کدتون این بود که صفت های name رو براشون تعریف نکرده بودین. من یکه مثال ساده با PHP نوشتم.

البته فکر می کنم الان هم مشکل داره چون هنگام ارسال فرم، ارزش های Select کشور ارسال میشن. مثلا برای USA در PHP این عبارت چاپ میشه:


California,New York,Ohio,Colorado,Florida,Texas,Arizona,Washingto n


البته برای رفع این مشکل هم راه هایی وجود داره: شما می تونید این اطلاعات رو به جای این که در ارزش Option های Select ذخیره کنید، در یک مقدار جاوا اسکریپتی یا یک Input از نوع Hidden ذخیره کنید.

این هم کد PHP & HTML


<?
if(isset($_POST['country'])){
echo "Country: ".$_POST['country']."<br>State: ".$_POST['state'];
exit;
}
?>
<html>
<head>
<script>
function SetStates(States) {
var stateBox = document.getElementById("state");
stateBox.options.length = 0;
if(States != "") {
var arrStates = States.split(",");
for(i = 0; i < arrStates.length; i++) {
if(arrStates[i] != "") {
stateBox.options[stateBox.options.length] = new Option(arrStates[i], arrStates[i]);
}
}
}
}
</script>
</head>
<body>
<form method="post" action="">
<pre>Country: <select onChange="SetStates(this.value)" id="country" name="country">
<option value=""></option>
<option value="New South Wales,Queensland,Victoria,South Australia,Tasmania,Western Australia,Northern Territory">Australia</option>
<option value="California,New York,Ohio,Colorado,Florida,Texas,Arizona,Washingto n">USA</option>
</select>
<br>State: <select id="state" name="state"></select>
</pre>
<input type="submit" value="Send">
</form>
</body>
</html>

Blackk_lightt
پنج شنبه 14 شهریور 1387, 09:26 صبح
اگه ممکنه یه مثال از ASP.NET بزارید

Lagon666
پنج شنبه 14 شهریور 1387, 10:17 صبح
متاسفانه من هیچ آشنایی با ASP.NET ندارم. توی این مثال همه چی واضحه. فکر کنم بهتر باشه توی بخش ASP موضوع رو مطرح کنی.