نمایش نتایج 1 تا 11 از 11

نام تاپیک: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

  1. #1

    Question رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    با درود خدمت همه.
    من در وب فرمم چندین Textbox دارم که می خوام کاربر به جای اینکه با کلید Tab به کنترل بعدی بره با زدن دکمه Enter همون کار Tab رو انجام بده. چند نمونه کد پیدا کردم ولی کار نمیکنه
    این رو تو قسمت Head اضافه کردم


    <script type ="text/javascript" >
    function FocusNext(cid) {
    var i = document.getElementById(cid.id).getAttribute('tabi ndex');
    var iKeyCode = 0;
    if (window.event)
    iKeyCode = window.event.keyCode
    else if (e)
    iKeyCode = e.which;
    if (iKeyCode == 13) {
    var ctrl = document.all;
    for (var count = 0; ctrl.length; count++) {
    if (ctrl[count].tabIndex == i + 1) {
    ctrl[count].focus();
    }
    }
    }
    else
    return true;
    }
    </script>


    بعد هم در رویداد onkeypress تکست باکسم این رو قرار دادم onkeypress="FocusNext(this)"

    ضمنا باید اضافه کنم در فرمم بنا به دلایلی از ScriptManager و UpdatePanel استفاده کردم.
    ممنون میشم راهنمایی کنید
    آخرین ویرایش به وسیله MasoudAdmin : یک شنبه 07 مرداد 1403 در 09:58 صبح

  2. #2
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    سلام. میتونید توی فرمتون برای فیلدهاتون صفت (attribute) tabindex قراربدید با مقدار اون رو برابر با اولویت هر فیلد قرار بدید.
    مثلا :
    فیلد اول tabindex="1"
    فیلد دوم tabindex="2"
    ...
    الی آخر

    و بعد از کد jquery زیر استفاده کنید.


    $(document).on('keypress', 'input', function (e) {
    if (e.which == 13) {
    e.preventDefault();
    if($(this).attr('type')=='submit')
    {
    $('form').submit();
    }
    else{
    $('[tabindex="'+(this.tabIndex+1)+'"]').focus();
    }

    }
    });

    این کد با فشرده شدن کلید اینتر فوکس رو چک میکنه ببینه روی کدوم فیلد هست و tabindex فیلد رو میگیره با عدد 1 جمع میکنه و فوکس رو روی المنتی قرار میده که tabindex برابر با حاصل جمع هست.

    ****درحالت پیشفرض وقتی روی فیلدی از یک فرم باشید و اینتر رو بزنید اون فرم submit میشه. پس توی کد بالا اول جلوی submit شدن فرم با اینتر رو گرفتیم و درنهایت چک میکنیم اگر فوکس روی submit فرم بود فرم رو submit کنه.

    بررسی کد :
    https://jsfiddle.net/berad/syexcjo4/

  3. #3

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    با درود و ادب
    جساراتا عرض کرده بودم از TextBox استفاده کردم. خود کنترل TextBox گزینه TabIndex رو داره که من ست کردم.
    کد HTML:
    <div>                            <asp:TextBox ID="txtBlockNo" runat="server" name="txtBlockNo" placeholder="بلوک/فاز" class="form-control form-control-sm placeholder-wave text-center" Width="200px" TabIndex="1" MaxLength="10"></asp:TextBox>                        </div>
    ولی باز کار نمیکنه

  4. #4
    کاربر دائمی آواتار _behnam_
    تاریخ عضویت
    مهر 1389
    محل زندگی
    سونای ایران ( بوشهر )
    پست
    988

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    سلام مجدد
    کدی که قرار دادم با استفاده از jquery هست. به قالب اضافه شده؟
    مورد بعدی خود کلمه TabIndex هست. وقتی پروژه رو اجرا کردید . توی قسمت سورس html پروژه از توی مرورگر بررسی کنید که درنهایت TabIndex با حروف بزرگ T و I هست؟ اگر که حروف بزرگ بودن پس شما باید توی کدهای موربوط tabindex رو به TabIndex تغییر بدید.

  5. #5

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    با درود و ادب
    من با کد جاوااسکریپت و در body این کد رو گذاشتم

    <script type="text/javascript">
    $(document).on('keypress', 'input', function (e) {
    if (e.which == 13) {
    e.preventDefault();
    if ($(this).attr('type') == 'submit') {
    $('form').submit();
    }
    else {
    $('[TabIndex="' + (this.tabIndex + 1) + '"]').focus();
    }


    }
    });
    </script>

    که کار نمیکنه

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,690

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    سلام و روز خوش

    جناب بهنام مشخص و بعد هم تاکید کردن که از کتابخانه jquery استفاده شده؛

    باید یک رفرنس به کتابخونه اش به header اضافه کنین،
    1- حالا یا به cdn ش مثل:
    <script  src="https://code.jquery.com/jquery-3.7.1.js"
    integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4="
    crossorigin="anonymous"></script>

    یا مثل این
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

    2- یا فایلش رو دانلود کنین روی سرور خودتون - شبیه این:
    <script src="/scripts/jquery-3.7.1.js"></script>


    اگر به هر دلیل نمیخواین از jquery استفاده کنین،
    باید javascript خالص (معروف به vanilla) بنویسین.

  7. #7

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    بله در پروژه ای که دارم کار می کنم هم از JQuery و هم از BootStrap استفاده کردم و در Body فرمم هم اضافه کردم

    <script src="../JSFiles/bootstrap.bundle.min.js"></script>
    <script type="text/javascript" src="../JSFiles/jquery-3.7.1.min.js"></script>


    آیا باید در رویدادهای TextBox مثلا onkeypress هم کاری انجام بدم؟ اگر جواب مثبت هست چجوری باید تابع Jquery رو در اون رویداد فراخوانی کنم؟
    آخرین ویرایش به وسیله MasoudAdmin : سه شنبه 09 مرداد 1403 در 19:37 عصر

  8. #8
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,690

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    خب یک جای کار رو قطعا دقت نکردین،
    وگرنه کد آقای بهنام درسته
    و البته که دیگه نباید برای تکسباکس ها onkeypress بذارین!

    چند نکته دیگه هم اینجا هست:

    1- در کد پست 1 که خودتون گذاشتین یک preventdefault نیاز هست
    که دیده نمیشه!
    وگرنه enter همون رفتار خودش رو نشون میده.
    و البته کد تمیزی هم نیست!

    2- رخداد onkeypress دیگه کلا از رده خارج هست و نباید استفاده کنین.
    به جای اون از keydown استفاده کنین.

    3- کد آقای بهنام تشخیص enter رو برای کل داکیومنت دربرمیگیره (برای همین نیاز هست که مشخص بشه enter روی دکمه submit زده شده یا نه)،
    که اگر فقط یک فرم داشته باشین و همه input ها در این فرم باشن مشکلی نیست،
    ولی اگر چند فرم داشته باشین یا input ها در چند دسته باشن باید ویرایش بشه.
    در کل کد درسته و کار میکنه.

  9. #9
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,690

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    من با جاوااسکریپت خالص (بدون نیاز به jquery یا کتابخونه دیگه)
    یک نمونه میذارم (کل کد پیج رو پیوست کردم تا بتونین با پیج خودتون مقایسه کنین و ببینین کجا مشکل هست).

    تشخیص keydown رو فقط به inputهای یک فرم معین (اینجا فرم با id=form1) به جز دکمه submit محدود کردم،
    پس دیگه نیازی نیست که چک بشه آیا enter روی دکمه submit هست یا نه.

    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="BN588949.aspx.vb" Inherits="aspnet_vb_tests.BN588949" %>


    <!DOCTYPE html>


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    <style>
    #form1 input {
    display: block;
    margin: 5px;
    }
    </style>
    <script>
    document.addEventListener("DOMContentLoaded", function () {
    document.querySelectorAll('#form1 input[tabindex]:not([type="submit"])')
    .forEach((input) => {
    input.addEventListener('keydown', function (event) {
    if (event.keyCode == 13) {
    event.preventDefault();
    document.querySelector(`#form1 input[tabindex="${this.tabIndex + 1}"]`).focus();
    }
    })
    })
    });
    </script>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox ID="TB1" runat="server"
    placeholder="field 1"
    TabIndex="1">
    </asp:TextBox>
    <asp:TextBox ID="TB2" runat="server"
    placeholder="field 2"
    TabIndex="2">
    </asp:TextBox>
    <asp:TextBox ID="TB3" runat="server"
    placeholder="field 3"
    TabIndex="3">
    </asp:TextBox>
    <asp:TextBox ID="TB4" runat="server"
    placeholder="field4"
    TabIndex="4">
    </asp:TextBox>
    <asp:Button ID="BTN_Submit" runat="server"
    Text="submit"
    TabIndex="5" />
    </div>
    </form>
    </body>
    </html>

  10. #10
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    73
    پست
    3,690

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    همین رو اگر با jquery پیاده کنین:
    <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="BN588949_jquery.aspx.vb" Inherits="aspnet_vb_tests.BN588949_jquery" %>

    <!DOCTYPE html>


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    <style>
    #form1 input {
    display: block;
    margin: 5px;
    }
    </style>
    <script src="scripts/jquery-3.7.1.js"></script>
    <script>
    $(document).ready(function () {
    $('#form1 input[tabindex]:not([type="submit"])')
    .on('keydown', function (event) {
    if (event.keyCode == 13) {
    event.preventDefault();
    $('#form1 input[tabindex="' + (this.tabIndex + 1) + '"]').focus();
    }
    });
    });
    </script>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:TextBox ID="TB1" runat="server"
    placeholder="field 1"
    TabIndex="1">
    </asp:TextBox>
    <asp:TextBox ID="TB2" runat="server"
    placeholder="field 2"
    TabIndex="2">
    </asp:TextBox>
    <asp:TextBox ID="TB3" runat="server"
    placeholder="field 3"
    TabIndex="3">
    </asp:TextBox>
    <asp:TextBox ID="TB4" runat="server"
    placeholder="field4"
    TabIndex="4">
    </asp:TextBox>
    <asp:Button ID="BTN_Submit" runat="server"
    Text="submit"
    TabIndex="5" />
    </div>
    </form>
    </body>
    </html>

  11. #11

    نقل قول: رفتن به کنترل بعدی در وب فرم با زدن دکمه Enter

    با درود و ادب. سپاس فراوان.

تاپیک های مشابه

  1. سوال: معادل Enter در اسمبلی ?-:
    نوشته شده توسط mahdi doanload در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 4
    آخرین پست: یک شنبه 04 دی 1390, 09:48 صبح
  2. سوال: کد Enter
    نوشته شده توسط unassigned_identifier در بخش گزارش سازی با Crystal Report
    پاسخ: 1
    آخرین پست: دوشنبه 13 خرداد 1387, 10:43 صبح
  3. کلید enter به جای tab
    نوشته شده توسط maisam57 در بخش C#‎‎
    پاسخ: 3
    آخرین پست: دوشنبه 13 خرداد 1387, 10:42 صبح
  4. حرکت با Enter
    نوشته شده توسط Roya Rayane در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 31 فروردین 1387, 09:39 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •