PDA

View Full Version : دسترسی به کنترل ها از طریق جاوا اسکریپت



hamhik
پنج شنبه 23 آذر 1385, 14:42 عصر
با سلام و عرض خسته نباشید.
من در vs در محیط asp.net دو کنترلtext از نوع webform اضافه کردم اما حالا می خوام که توی قسمت htmlبرنامه بتونم کدهای جاوا اسکریپت رو که می نویسم به محتوای textbox ها دسترسی داشته و یا از طریق خود زبان جاوا اسکریپت به text هام مقدار بدم این کار و باید چه جوری انجام داد.ولی متاسفانه وقتی مثلا یک متغیر در قسمت جاوا اسکریپت تعریف می کنم و در مقابلش اسم شی م رو می نویسم ارور می ده که اصلا چنین شی تعریف نشده در صورتی که من اون رو روی فرو قرار دادم.


البته این دستور رو که در محیط html asp.net می نویسم اصلا مقدار value رو توی اون پنجره که باز می شه نداره؟؟؟؟؟؟؟؟؟باید چیکار کنم؟؟؟



document.getelemantbyid("TextBox1").value="mohammad

hamhik
پنج شنبه 23 آذر 1385, 14:43 عصر
حالا اگه بخوام مقدار textbox1 رو در متغیری که در جاوا تعریف کردم بریزم باید چیکار کنم؟؟؟

Behrouz_Rad
پنج شنبه 23 آذر 1385, 15:24 عصر
جاوا اسکریپت، (Case -Sensitive) هست (به بزرگ و کوچک بودن حروف حساس است)

hamhik
پنج شنبه 23 آذر 1385, 23:47 عصر
خب ببنید من که می رم تو قسمت html محیط asp.net در vs وقتی می خوام بنویسم value تو اون پنجره که باز می شه خصوصیات شی رو می بینی هر چی داره الا value مثلا اون پنجره توی خصوصیاتش همه خصوصیات getelementbyid رو نشون می ده ولی value نداره

Behrouz_Rad
شنبه 25 آذر 1385, 20:45 عصر
مگه باید نشون بده؟

samanes
یک شنبه 03 دی 1385, 11:13 صبح
وقتی کنترلی رو به صورت server side ایجاد میکنی name اون کنترل همونی نیست که در قسمت id کنترل set کردی.
برای اینکه به name دسترسی پیدا کنی بهتره کد رو با view source تا بفهمی name ای که استفاده میشه چیه و از همون name استفاده کنی. این name هم با یک الگوریتم خاص ساخته میشه و تغییر نمیکنه.
ولی در کنترل های برزخی (کنترل هایی که ذاتا html ای هستند ولی در آنها از id و runat="server" استفاده میکنیم) وقتی که id را set میکنیم name هم دقیقا مساوی و برابر id ما خواهد بود و میتوان از طریق جاوا اسکریپت آنرا کنترل کرد.

سید مسعود موحد
چهارشنبه 27 دی 1385, 10:43 صبح
منم این مشکل رو دارم دوستان اگر راه حلی دارن لطفا قرار دهند تا منم استفاده کنم
البته کد فوق را به صورت زیر استفائه کردم وخمانطور که دوستمون گفتن من در View Source نام کنترل خود را هم برداشتم ولی بازم نشد

document.getElementById("Label1").value := "salam2"
و کل view source صفحه منم به شکل زیر است



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >


<!-- ZoneLabs Privacy Insertion -->
<script language='javascript' src='http://127.0.0.1:1032/js.cgi?pcaw&r=28703'></script>

<script language =javascript >
function ShowMessage(Message)
{
// var truthBeTold = window.confirm("Click OK to continue. Click Cancel to stop.");
// if (truthBeTold)
// {
window.document.getElementsByName("Label1").value := "SALAM0";
// document.getElementById("Label").value := "salam1"
window.alert("Show Label ");
// document.getElementById("Label1").value := "salam2"
// document.all("Label").value = "Welcome to our Web page!"
// }
// else
// window.document.all("Label1").value = "Bye for now!"
//window.alert("Bye for now!");
}
</script>

<head><title>
Untitled Page
</title></head>
<body>
<form name="form1" method="post" action="default2.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTE2MjY5MTY1NWRkH0zgRFuAeRsOjJ7/rYqtRIXKXhc=" />
</div>

<div>
<span id="Label1">Label</span>
<br />
<input type="submit" name="Button1" value="Button" onclick="ShowMessage(&quot;Message&quot;);" id="Button1" /></div>

<div>

<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgLMg8C5CwKM54rGBn5vabrcCnLD4PyWo58WIgcZPNlk" />
</div></form>
</body>
</html>

<!-- ZoneLabs Popup Blocking Insertion -->
<script language='javascript'>postamble();</script>

من در تایپیک دیگری هم عنوان کردم دستور زیر هم من نتونستم استفاده کنم


document.all("Label").value = "Welcome to our Web page"

shahroozj
چهارشنبه 27 دی 1385, 12:59 عصر
دوستان لطفا دقت کنند که چطوری دارند مقدار دهی میکنند مگه span یک کنترل است که به property value مقدار دهی میکنید ؟؟؟
برای span و div و .... باید از innerText استفاده کنید مثلا


document.getElementById("Label1").innerText = "salam1"


درضمن := برای دلفی است نه javascript

سید مسعود موحد
چهارشنبه 27 دی 1385, 14:49 عصر
دوست عزیز میشه تفاوت بین دستورهای
getElementsByName و getElementById رو توضیح بدین ممنون میشم
و همچنین اگر من بخواهم که کلید delete برای حذف یک رکور بگذارم چطور میتوانم با یک اسکریپت ابتدا تایید بگیرم سپس دستور حذف را صادر کنم من میخوام از کلید هایی که سرور سایت هستن استفاده کنم چطور میتونم در این نوع کلیدها بگویم اگر تابعی که در OnClientClick صدا میزنم اگر کلید تایید را زده است آنگاه خود click کلید اجرا شود

shahroozj
چهارشنبه 27 دی 1385, 15:20 عصر
getElementsByName و getElementById رو توضیح بدین ممنون میشم

به کمک getElementsByName شما میتوانید یک collection از تمام المانهایی که Name یا ID آنها برابر مقدار مورد نظر است را بدست آورید ولی به کمک getElementById شما اولین المان برابر با مقدار مورد نظر را بدست می آورید

در مورد سوال دوم لطفا در یک تاپیک جداگانه بزنید تا از بحث خارج نشویم