الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اشغل حدث button_onclick عند ضغط

مغلق
بدأه ابو السموأل في 7 مارس 2005 · 33 رد · 9,379 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اخواني كيف استطيح اطلاق حدث زر button_onclick عندما اضغط enter داخل textbox

للتوضيح اكثر

اريد من التطيبق ان يقوم بالتالي عندما يكتب المستخدم username و ال password ثم يكبس enter ينطلق الحدث button_onclick

ارحو ان اكون وضحت الفكرة

طبعا المشكلة عندي انو لما يكبس enter بروح بنفذ الحدث تبع اول زر وضع على التطبيق وهوليس الزر المطلوب

تم تعديل هذه المشاركة بواسطة ابو السموأل في 7 مارس 2005 في 10:52

#2

في حالة جود رز واحد تستطيع وضعه كهدف افتراضي بالطريقة التالية.

Page.RegisterHiddenField("__EVENTTARGET", "MyDefaultButton");

في حالة وجود اكثر من رز في الصفحة عليك استخدام جافا سكربت لاداء ذلك. وهي عملية مرهقة بعض الشيء.

وحدن بيبقو متل زهر البيلسان وحدهن بيقطفو وراق الزمان

بيسكرو الغابي بيضلهن متل الشتي يدقوا على بوابي على بوابي

يا زمان يا عشب داشر فوق هالحيطان ضويت ورد الليل عكتابي

برج الحمام مسور و عالي هج الحمام بقيت لحالي لحالي

يا ناطرين التلج ما عاد بدكن ترجعو صرخ عليهن بالشتي يا ديب بلكي بيسمعو

http://www.mazikana.com/Songs/F/Fayrouz/mp...uz---Wahdon.mp3

#3

هل أدواتك هي webcontrols أم html controls ؟

محمد حمود

ماجستير تقنية المعلومات

بكالوريوس هندسة مدنية

محترف إدارة مشاريع (PMP)

مهندس جودة البرمجيات (CSQE)

مبرمج معتمد من مايكروسوفت (MCP)

متخصص في نظم المعلومات الجغرافية GIS

mohamed.hammod(at)gmail.com

www.ShapeViewer.com

#4

هي webcontrols اخي

#5

الا يوجد حل الا باستخدام jscript

#6
MyTextBox.Attributes["onkeydown"] = "if(event.keyCode==13){"+GetPostBackClientEvent(this.MyButton,"")+";event.returnValue=false;}";

هذا يضمن انك لن تحتاج الى تغيير الكود اذا انتقلت من نسخة ASP.NET الحالية الى نسخة 2.0 , وهو ما نصحت به مايكروسوفت.

اقتباس
الا يوجد حل الا باستخدام jscript

الجافا سكريبت هي الطريقة الوحيدة لاعلام السيرفر بالاحداث التي تنشأ على الكلاينت (الزبون)

تحياتي

مدني

#7

لماذا لا تستدعي ()Button.PerformClick في الحدث KeyPress الخاص بالـ TextBox ??

رأس الحكمة الإيمان بالله

#8

اخي الحبيبالحدثKeyPress غير موجود في ال asp.net

#9

لقد لاحظت أن الضغط على زر enter عندما يكون المؤشر في مربع النص، يقوم بشكل تلقائي بإرسال الطلب إلى السيرفر مما يؤدي لتنفيذ الحدث page load.

وبالتالي يمكن معالجة هذا الأمر في ذلك الحدث.

محمد حمود

ماجستير تقنية المعلومات

بكالوريوس هندسة مدنية

محترف إدارة مشاريع (PMP)

مهندس جودة البرمجيات (CSQE)

مبرمج معتمد من مايكروسوفت (MCP)

متخصص في نظم المعلومات الجغرافية GIS

mohamed.hammod(at)gmail.com

www.ShapeViewer.com

#10

كلا يا اخي هو لا يقوم باطلاق الحدث page

-load انما يقوم باطلاق حدث اول زر وضع على الصفحة اثنا عملية التصميم

في الحقيقة يوجد حل سهل

اني اقوم بفتح صقحة ال html ونقل الtag تبع الزر ليكون اول tag بعد tag الform

لكن هذا الحل ما بزبط اذا كنت حاطط ال controlS في table وهذه هي مشكلتي

#11

السلام عليكم ورحمة الله وبركاته

اخي مدني كتبت الكود التالي في الحدث passTextBox_TextChanged

بعد ان حولتوا لvb

اقتباس
passTextBox.Attributes("onkeydown") = "if(event.keyCode==13){" + GetPostBackClientEvent(Me.ImageButton1, "") + ";event.returnValue=false;}"

المشكلة انو اعطاني غلط على GetPostBackClientEvent

لما احط المؤشر عليها بعطيني GetPostBackClientEvent is not declared

#12

اخي اعملت بحث واكتشفت انو GetPostBackClientEvent عباارة عن function

ال function ووضعت كود الlogin بس على الفاضي ما سوى اشي جديد وهي الكود

Private Sub passTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles passTextBox.TextChanged
        passTextBox.Attributes("onkeydown") = "if(event.keyCode==13){" + GetPostBackClientEvent(Me.ImageButton1, "") + ";event.returnValue=false;}"

وهذا ال function

 Public Function GetPostBackClientEvent( _
    ByVal control As Control, _
    ByVal argument As String _
 ) As String
        Dim insert As String
        Dim insert1 As String
        Dim reader As System.Data.SqlClient.SqlDataReader
        insert = "select * from Users where [User_Name]=N'" & Me.UserTextBox.Text & "'"

        Dim cmd As New SqlCommand(insert, cn)
        cn.Open()
        reader = cmd.ExecuteReader(CommandBehavior.SingleRow)
        If (reader.Read()) Then

            If reader("User_Name") = Me.UserTextBox.Text And reader("Pass_Word") = Me.passTextBox.Text Then

                Session("ID") = Me.UserTextBox.Text
                Session("UserEmail") = reader("Email")
                Me.Label5.Visible = False
                Me.Label6.Visible = False
                Me.ImageButton1.Visible = False
                Me.ImageButton2.Visible = False
                Me.HyperLink1.Visible = False
                Me.UserTextBox.Visible = False
                Me.passTextBox.Visible = False
                Me.Label2.Visible = False


            Else
                Me.Label2.Visible = True

                Exit Function
            End If
        Else

            Me.Label2.Visible = True
        End If
        cn.Close()

    End Function
#13

السلام عليكم..

لقد..كتبت كود بسيط..بالجافا سكربت..بحيث يمكنك..إضافة عدد لا نهائي من TextBox ..بحيث عن الضغط على الزر enter ..يقوم بتحفيز الحدث Click ..ل Button أو LinkButton ..او اي كنترول لديه الحدث..Click ..[;)]..الان لنبدأ نقول ان معنا..شاشة بحث تتكون من TextBox و Button ..لنبدا بكتابة الكود [:|]

نكتب الكود في ال Page Load في الكود بيهايند::

private void Page_Load(object sender, System.EventArgs e)
  {
  	this.SetDefaultButton(this.txtSearchKeyword,this.btnSearch);
                               }

لاحظ..اسم الدالة SetDefaultButton هي عبارة عن User Defined Method ..سوف أقوم بكتابة ال body تبعها بعد قليل..هنا نقوم بتمرير ال TextBox و Button ..

public void SetDefaultButton(TextBox textControl, Button defaultButton)
  {
  	string theScript = @"<script language=""javascript"">
    <!--
    	function GetEventDown(btn, event)
      {
      	if (document.all)
        {
        	if (event.keyCode == 13)
          {
          	event.returnValue=false;
          	event.cancel = true;
          	btn.click();
          }
        }
      	else if (document.getElementById)
        {
        	if (event.which == 13)
          {
          	event.returnValue=false;
          	event.cancel = true;
          	btn.click();
          }
        }

      	else if(document.layers)
        {
        	if(event.which == 13)
          {
          	event.returnValue=false;
          	event.cancel = true;
          	btn.click();
          }
        }

    	}
// -->
</SCRIPT>";
  	Page.RegisterStartupScript("DefaultToScript", theScript);
  	textControl.Attributes.Add("onkeydown", "GetEventDown(" + defaultButton.ClientID + ",event)");
  }

أولا قمنا بتسجيل ال Script ..الذي يقوم بتتبع حدث ال keydown ..ومن تم يقوم بتحفيز ال Click event....هذا كل شىء بكل بساطة..

بالتوفيق بسام باصمد.. :)

تم تعديل هذه المشاركة بواسطة Bassam Basamad في 17 مارس 2005 في 01:36

techvisio.gif

اللهم انصر إخواننا المجاهدين في كل مكان..

#14

اخي لا تزعل بس انا ما افهمت شي من الشرح

بعدين انا فهمي على قدي في c#

اذا ممكن توضيح اكثر للكود لو سمحت

#15

حاول تقرأ الكود..وإذا طرأ عليك شىء صعب أثناء قرآتك للكود..سواء للجافا سكربت أو ال c#..أطرح سؤالك ونحن في أتم الإستعداد.. :)

بسام باصمد ;)

techvisio.gif

اللهم انصر إخواننا المجاهدين في كل مكان..

#16

يا اخي عبد الصمد والله صار لي يومين بجرب احول الكود تبعك ل vb

المشكلة انو في شغلات مش فاهمها ان راح احط الي اعملتوا

 Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  Me.SetDefaultButton(Me.txtSearchKeyword, Me.btnSearch)
end sub

هذا في الحدث page_load

و اعملت SetDefaultButton على الشكل التالي و عرفت ال theScript بس المشكلة في محتوا هذه ال string كيف احطوا بطريقة vb وبعدين اخي شو بالنسبة لاخر سطرين هل هما داخل ال string ام خارج والله يا اخي راسي لف لف و مش عارف اخلص من هالمشكلة

Sub SetDefaultButton(ByVal textControl As TextBox, ByVal defaultButton As Button)
Dim theScript As String
    End Sub

تم تعديل هذه المشاركة بواسطة ابو السموأل في 27 مارس 2005 في 17:42

#17

:(

وين الشباب

#18

اخي ابو السمؤال,

يبدو انك بالصدفة وجدت function بنفس الاسم على احد المواقع :) .الدالة GetPostBackClientEvent هي دالة من دوال الفئة Page ولا علاقة لها بالLogin ولا داعي لكتابة الكود الخاص بها بل هي تاتي مع الasp.net وهي ببساطة ترجع لك النص "__doPostBack('YourButtonName','')" وهذا النص هو مناداة لدالة الجافا سكريبت التي تبعث الفورم.عند ارسال الفورم فان السيرفر سيبحث عن الزر YourButtonName وينادي دالة الحدث الخاصة به YourButtonName_Click

اذا كنت في كود الصفحة فاكتب GetPostBackClientEvent ,اما اذا كنت في كود اليوزر كنترول فاكتب Page.GetPostBackClientEvent

تحياتي

مدني

#19

السلام عليكم ورحمة الله وبركاته

اخي مدني جزاك الله كل خير على الرد انا بستخدم USERCONTROL عشان هيك كان ناقص ال page

بس والله يا اخي انها ما زبطت

جربت اعمل debug

فعلا بروح بشغل ال

passTextBox.Attributes("onkeydown") = "if(event.keyCode==13){" + Page.GetPostBackClientEvent(Me.ImageButton1, "") + ";event.returnValue=false;}"

بس يعدين بطلع بدون ما يشغل ال

ImageButton1.click

معلش اخي غلبتك

#20

بسم الله الرحمن الرحيم

أخي أبو السموأل

كتبت هذا المثال التجريبي خصيصاً لك B) ليساعدك على حل مشكلتك بدون استخدام جافا

أرجو أن يلبي غرضك وأي استفسار أنا في الخدمة

login.rar

#21

والله انك كببببببببببببببببببير

ساجرب وارجع لك

:)

#22

:s :s

والله يا اخي ما زبطت مش عارف ليش

مع انو راح على الكود تبع الزر ونفذو بس على الفاضي ما عمل login

اخي بالمناسبة انا عامل ال login على شكل user control بهده الحالو الصفحة راح تعمل page_load على الشكل التالي

1. page_load للصقحة الرئسية

2.page_load للuser control

3.buton_onclick

4.page_load للصفحة الرئسية مرة اخرى

بس للاسف ما اعطى اي نتيجة مش عارف ليش :s :s

#23
اقتباس
مع انو راح على الكود تبع الزر ونفذو بس على الفاضي ما عمل login

:blink: غريبة

قمت بنقل Login إلى User Control ولا توجد أي مشاكل

لكن لا أدري ماهي الخطوات التي وضعتها أنت في عملية التسجيل

أرجو أن تزودني بالتفصيل بالسيناريو الذي تستخدمه

#24
 cn.Open()
        reader = cmd.ExecuteReader(CommandBehavior.SingleRow)

        If (reader.Read()) Then

            If reader("User_Name") = Me.UserTextBox.Text And reader("Pass_Word") = Me.passTextBox.Text And reader("Activation") = "True  " Then


                Session("ID") = Me.UserTextBox.Text
                Session("UserEmail") = reader("Email")
                Me.Label4.Text = reader("F_Name")
                Me.Label5.Visible = False
                Me.Label6.Visible = False
                Me.ImageButton1.Visible = False
                Me.ImageButton2.Visible = False
                Me.HyperLink1.Visible = False
                Me.UserTextBox.Visible = False
                Me.passTextBox.Visible = False
                Me.Label2.Visible = False
                Me.Label3.Visible = True
                Me.Label4.Visible = True
                cn.Close()

            Else
                Me.Label2.Visible = True

                Exit Sub
            End If
        Else

            Me.Label2.Visible = True
        End If

تفضل اخي هي الكود

تسطسع اخي ان تراى كيف تعمل هذه ال usercontrol بالموقع لكن طبعا بدون الكود تبعك لاني ما رفعتوا

www.scgate.com

username:islam_firstly

password:123456789

لاحظ اخي اني استعملImageButton وهي لا تتعامل مع passTextBox.TextChanged

لذلك يجب تغيرها ال button عادي

#25

السلام عليكم..عفوا لتأخري في الرد..

بالنسبة لكود الفيجوال.. :)

Public Sub DefaultButton(ByRef Page As System.Web.UI.Page, ByRef objTextControl As TextBox, ByRef objDefaultButton As Button)
' Sets default buttons.
  Dim sScript As New System.Text.StringBuilder()

  sScript.Append("<script language=""javascript"">" & vbCrLf)
  sScript.Append("function fnTrapKD(btn){" & vbCrLf)
  sScript.Append(" if (document.all){" & vbCrLf)
  sScript.Append("   if (event.keyCode == 13)" & vbCrLf)
  sScript.Append("   { " & vbCrLf)
  sScript.Append("     event.returnValue=false;" & vbCrLf)
  sScript.Append("     event.cancel = true;" & vbCrLf)
  sScript.Append("     btn.click();" & vbCrLf)
  sScript.Append("   } " & vbCrLf)
  sScript.Append(" } " & vbCrLf)
  sScript.Append("}" & vbCrLf)
  sScript.Append("</SCRIPT>" & vbCrLf)

  objTextControl.Attributes.Add("onkeydown", "fnTrapKD(document.all." & objDefaultButton.ClientID & ")")
  Page.RegisterStartupScript("ForceDefaultToScript", sScript.ToString)
End Sub

الكود اللي يستدعي هذه الدالة كالتالي:

DefaultButton(Page, TextBox1, Button1)
DefaultButton(Page, TextBox2, Button2)
DefaultButton(Page, TextBox3, Button3)

هذا بكل بساطة..

بالتوفيق..عزيزي

techvisio.gif

اللهم انصر إخواننا المجاهدين في كل مكان..

هذا الموضوع مغلق.

مواضيع مشابهة