Metin kutusunda Enter tuşuna bastığınızda HTML düğmesi nasıl tetiklenir?


106

Yani şu ana kadar sahip olduğum kod:

<fieldset id="LinkList">
    <input type="text" id="addLinks" name="addLinks" value="http://">
    <input type="button" id="linkadd" name="linkadd" value="add">
</fieldset>

Bu, a içinde değildir <form>ve aynı a içinde olduğu gibidir <div>. Ancak, textbox"addLinks" denen bağlantıya bir şey yazdığımda, kullanıcının Enter tuşuna basabilmesini buttonve daha sonra bir JavaScript işlevini çalıştıracak "linkadd" komutunu tetiklemesini istiyorum .
Bunu nasıl yapabilirim?
Teşekkürler

Düzenleme: Bu kodu buldum ama çalışmıyor gibi görünüyor.

$("#addLinks").keyup(function(event){
    if(event.keyCode == 13){
        $("#linkadd").click();
    }
});

3
bağlanın keypressve kontrol edin e.charCode==13(enter düğmesi).
Brad Christie

Yukarıdaki kodu kullanmadan önce jquery kitaplığı referansı eklediniz mi?
Milind Anantwar

Evet, kütüphaneyi referans aldım, neden çalışmadığından emin değilim, ama şimdi sorun değil. Teşekkürler
Ben

Evet, @BradChristie'nin bahsettiği keypressveya bu cevaptakeydown bahsedildiği gibi, gidilecek yol budur.
metakermit

Yanıtlar:


117
$(document).ready(function(){
    $('#TextBoxId').keypress(function(e){
      if(e.keyCode==13)
      $('#linkadd').click();
    });
});

5
tıklama olayından sonra 'yanlış dönüş' eklemek de yararlıdır, varsayılan girişi önlemek için sayfadaki diğer düğmelere basın
deebs

dmitry_romanov'un cevabı daha iyi çünkü saf html.
McKay

6
@McKay, hayır değil. Düğmeler, formların yanı sıra şeyler için de kullanılabilir. Aslında, OP'nin sorusu açıkça bir biçimde değildir.
Dan

2
@deebs oldukça doğru, o gün ne yaptığımdan emin değilim ama beyin osuruğu yaşıyor olmalıyım.
Tim MastersAllen'de


77

Yıl …… 2020. Ve bunun hala geçerli olduğuna inanıyorum.


KULLANMAYIN keypress

  1. keypressolay olduğunu tetiklenmez kullanıcı bastığında herhangi bir karakter üretmeyen bir tuşa gibi Tab, Caps Lock, Delete, Backspace, Escape, sol ve sağ Shift, fonksiyon tuşları ( F1- F12).

    keypressolay Mozilla Geliştirici Ağı

    keypressÖnemli bir olay tetiklenir aşağı basıldığında ve bu anahtar, normal olarak , bir karakter değer üretir . inputBunun yerine kullanın .

  2. Kullanımdan kaldırıldı.

    keypressetkinlik Kullanıcı Arayüzü Etkinlikleri (W3C çalışma taslağı 8 Kasım 2018'de yayınlandı.)

    • NOT | keypressOlay geleneksel ile ilişkili bir tespit karakter değeri fiziksel anahtarı yerine , bazı konfigürasyonlarda tüm tuşlar mevcut olmayabilir.
    • UYARI | keypressEtkinlik türü referans ve bütünlük açısından bu tarifnamede tanımlandığı gibidir, ancak bu şartname karşı çıkan bu olay türünün kullanımı. Bağlamları düzenlerken yazarlar beforeinputbunun yerine etkinliğe abone olabilirler .

KULLANMAYIN KeyboardEvent.keyCode

  1. Kullanımdan kaldırıldı.

    KeyboardEvent.keyCode Mozilla Geliştirici Ağı

    Kullanımdan kaldırıldı | Bu özellik artık tavsiye edilmiyor. Bazı tarayıcılar hala desteklese de, ilgili web standartlarından zaten kaldırılmış olabilir, kaldırılma sürecinde olabilir veya yalnızca uyumluluk amacıyla tutulabilir. Kullanmaktan kaçının ve mümkünse mevcut kodu güncelleyin; Kararınızı yönlendirmek için bu sayfanın altındaki uyumluluk tablosuna bakın . Bu özelliğin herhangi bir anda çalışmayabileceğini unutmayın.


O halde ne kullanmalıyım? (İyi uygulama)

// Make sure this code gets executed after the DOM is loaded.
document.querySelector("#addLinks").addEventListener("keyup", event => {
    if(event.key !== "Enter") return; // Use `.key` instead.
    document.querySelector("#linkadd").click(); // Things you want to do.
    event.preventDefault(); // No need to `return false;`.
});

ne dersin if (event.key == "Enter") { document.querySelector("#linkadd").click(); } :?
Anupam

2
.keyTüm tarayıcılarda desteklenmediğini unutmayın : caniuse.com/#feat=keyboardevent-key - İnsanların yaklaşık% 10'u onu desteklemeyen tarayıcılar kullanıyor.
Martin Tournoij

72

JS içermeyen bir çözüm var.

Set type=submitvarsayılan ve olmak istiyorum düğmeye type=buttondiğer düğmeleri. Şimdi aşağıdaki formda, herhangi bir giriş alanında Enter tuşuna basabilirsiniz veRender tuşuna basabilirsiniz düğme çalışacaktır (formdaki ikinci düğme olmasına rağmen).

Misal:

    <button id='close_renderer_button' class='btn btn-success'
            title='Перейти к редактированию программы'
            type=button>
      <span class='glyphicon glyphicon-edit'> </span> Edit program
    </button>
    <button id='render_button' class='btn btn-primary'
            title='Построить фрактал'
            type=submit
            formaction='javascript:alert("Bingo!");'>
      <span class='glyphicon glyphicon-send'> </span> Render
    </button>

FF24 ve Chrome 35'te test edilmiştir ( formactionhtml5 özelliğidir, ancak typedeğildir).


17
yalnızca bir formun içindeyseniz çalışır, OP bir form kullanmaz
Andrew

@Andrew Evet, bunu kaçırdım. Şimdi bunu net bir şekilde görebiliyorum, teşekkürler.
dmitry_romanov

4
@Andrew, doğru, ancak çoğu durumda onu hiçbir şey yapmama biçiminde sarmak önemsizdir ...
Stephen Chung

2
Ek olarak bu çözüm, varsayılan eylemi göndermek olan iOS sanal klavyesi [Git] düğmesi üzerinde çalışır.
Elemental

10
  1. Değiştir buttonbir ilesubmit
  2. Aşamalı olun , sunucu tarafı sürümünüzün olduğundan emin olun
  3. JavaScript'inizi düğmenin işleyicisine submitdeğil formun işleyicisine bağlayınclick

Alana enter tuşuna basmak form gönderimini tetikleyecek ve gönderme işleyicisi tetiklenecektir.


6

Girişinize şu şekilde bir olay işleyicisi ekleyebilirsiniz:

document.getElementById('addLinks').onkeypress=function(e){
    if(e.keyCode==13){
        document.getElementById('linkadd').click();
    }
}

2

Giriş türü = "düğme", tetiklenmesi gereken varsayılan düğme için input type = "gönder" ile değiştirildiğinde çalışır.


1

Öncelikle jquery kitaplık dosyası jquery ekleyin ve html başlığınızda çağırın.

ve sonra jquery tabanlı kod kullan ...

$("#id_of_textbox").keyup(function(event){
    if(event.keyCode == 13){
        $("#id_of_button").click();
    }
});

1

Bunu yapmalı, ben jQuery kullanıyorum düz javascript yazabilirsiniz. İşlevselliğinizle
değiştirin sendMessage().

$('#addLinks').keypress(function(e) {
    if (e.which == 13) {
        sendMessage();
        e.preventDefault();
    }
});

1

Önceki bazı cevaplara dayanarak şunu buldum:

<form>
  <button id='but' type='submit'>do not click me</button>
  <input type='text' placeholder='press enter'>
</form>

$('#but').click(function(e) {
  alert('button press');
  e.preventDefault();
});

Bir göz atın Fiddle

DÜZENLEME: Ek html öğeleri eklemek istemiyorsanız, bunu yalnızca JS ile yapabilirsiniz:

    $("input").keyup(function(event) {
        if (event.keyCode === 13) {
            $("button").click();
        }
    });     

0

W3schools.com howto'yu buldum, beni dene sayfası aşağıda.

https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_trigger_button_enter

Bu, normal tarayıcımda çalıştı ancak yerleşik php tarayıcısını kullanan php uygulamamda çalışmadı.

Biraz oynadıktan sonra, durumuma uygun ve diğer her durumda çalışması gereken aşağıdaki saf JavaScript alternatifini buldum:

    function checkForEnterKey(){
        if (event.keyCode === 13) {
            event.preventDefault();
            document.getElementById("myBtn").click();
        }
    }

    function buttonClickEvent()
    {
        alert('The button has been clicked!');
    }

HTML Düğmeyi etkinleştirmek için metin kutusunun içindeki giriş tuşuna basın.

    <br />
    <input id="myInput" onkeyup="checkForEnterKey(this.value)">
    <br />
    <button id="myBtn" onclick="buttonClickEvent()">Button</button>

-1
<input type="text" id="input_id" />    

$('#input_id').keydown(function (event) {
    if (event.keyCode == 13) { 
         // Call your function here or add code here
    }
});

-2

Kendo düğmesi kullanıyorum. Bu benim için çalıştı.

<div class="form-group" id="indexform">
    <div class="col-md-8">
            <div class="row">
                <b>Search By Customer Name/ Customer Number:</b>
                @Html.TextBox("txtSearchString", null, new { style = "width:400px" , autofocus = "autofocus" })
                @(Html.Kendo().Button()
                    .Name("btnSearch")
                    .HtmlAttributes(new { type = "button", @class = "k-primary" })
                    .Content("Search")
                    .Events(ev => ev.Click("onClick")))
            </div>
    </div>
</div>
<script>
var validator = $("#indexform").kendoValidator().data("kendoValidator"),
          status = $(".status");
$("#indexform").keyup(function (event) {
    if (event.keyCode == 13) {
        $("#btnSearch").click();
    }
});
</script>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.