• 0
ابو السموأل

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

سؤال

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

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

للتوضيح اكثر

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

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

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

تم تعديل بواسطه ابو السموأل
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

33 إجابة على هذا السؤال .

  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

تحياتي

مدني

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي اعملت بحث واكتشفت انو 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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

لقد..كتبت كود بسيط..بالجافا سكربت..بحيث يمكنك..إضافة عدد لا نهائي من 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
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

بسام باصمد ;)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا اخي عبد الصمد والله صار لي يومين بجرب احول الكود تبعك ل 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

تم تعديل بواسطه ابو السموأل
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

تحياتي

مدني

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

جربت اعمل debug

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

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

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

ImageButton1.click

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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

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

login.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

:s :s

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

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

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

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

2.page_load للuser control

3.buton_onclick

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

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

0

شارك هذا الرد


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

:blink: غريبة

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

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 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 عادي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

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

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)

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

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

والله يا اخي عبد الصمد ما زبط

انا حطيت الكود التالي في passTextBox_TextChanged

 DefaultButton(Page, passTextBox, Button1)

واعملت ال DefaultButton زي ما انت كتبتوا بازبط بدون لا حرف زيادة

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

و تصرف البرنامج على الشكل التالي لما كبست ENTER داخل ال passTextBox

شغل الدالة DefaultButton

نفذ الكود الي بداخلها بعدين طلع بدون ما يروح على كود الكبسة Button1 وينفذها

اخي :s شو المشكلة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .