だから私がこれまでに持っているコードは次のとおりです。
<fieldset id="LinkList">
<input type="text" id="addLinks" name="addLinks" value="http://">
<input type="button" id="linkadd" name="linkadd" value="add">
</fieldset>
<form>
にはなく、<div>
内にあるのと同じです。ただし、「addLinks」と呼ばれるtextbox
に何かを入力すると、ユーザーがEnterキーを押して「linkadd」button
をトリガーできるようになり、JavaScript関数が実行されます。
これどうやってするの?
ありがとう
編集:このコードは見つかりましたが、機能していないようです。
$("#addLinks").keyup(function(event){
if(event.keyCode == 13){
$("#linkadd").click();
}
});
$(document).ready(function(){
$('#TextBoxId').keypress(function(e){
if(e.keyCode==13)
$('#linkadd').click();
});
});
Jsフリーのソリューションがあります。
type=submit
をデフォルトにしたいボタンに設定し、type=button
を他のボタンに設定します。これで、次のフォームで任意の入力フィールドでEnterキーを押すことができ、Render
ボタンが機能します(フォームの2番目のボタンであるにもかかわらず)。
例:
<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およびChrome 35でテスト済み(formaction
はhtml5機能ですが、type
はそうではありません)。
keypress
は使用しないでくださいkeypress
イベントはトリガーされないユーザーが文字を生成しないキーを押したとき Tab、 Caps Lock、 Delete、 Backspace、 Escape、 左右 Shift、 ファンクションキー(F1 - F12)。
keypress
イベント Mozilla Developer Network
keypress
イベントは、キー押されているで、通常そのキー文字値を生成するのときに起動されます。代わりにinput
を使用してください。
廃止されました。
keypress
イベント Iイベント(2018年11月8日に公開されたW3Cワーキングドラフト)
- NOTE |
keypress
イベントは伝統的に物理キーではなく 文字値 を検出するに関連付けられており、一部の構成ではすべてのキーで利用できない場合があります。- 警告 |
keypress
この仕様では、参照と完全性のためにイベントタイプが定義されていますが、この仕様 非推奨 このイベントタイプの使用編集コンテキストの場合、作成者はbeforeinput
イベントを代わりにサブスクライブできます。
KeyboardEvent.keyCode
を使用しないでください
KeyboardEvent.keyCode
Mozilla Developer Network非推奨 |この機能は推奨されなくなりました。一部のブラウザはまだサポートしているかもしれませんが、関連するWeb標準から既に削除されているか、ドロップされているか、互換性のためにのみ保持されている可能性があります。使用を避け、可能であれば既存のコードを更新してください。このページの下部にある 互換性テーブル を参照して、決定を行ってください。この機能はいつでも機能しなくなる可能性があることに注意してください。
// 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;`.
});
button
をsubmit
に置き換えますsubmit
ハンドラーではなく、フォームのclick
ハンドラーにバインドしますフィールドでEnterキーを押すと、フォームの送信がトリガーされ、送信ハンドラーが起動します。
次のように入力にイベントハンドラーを追加できます。
document.getElementById('addLinks').onkeypress=function(e){
if(e.keyCode==13){
document.getElementById('linkadd').click();
}
}
これでうまくいくはずです。私はjQueryを使用していて、プレーンなJavaScriptを記述できます。sendMessage()
を機能に置き換えます。
$('#addLinks').keypress(function(e) {
if (e.which == 13) {
sendMessage();
e.preventDefault();
}
});
以前のいくつかの回答に基づいて、私はこれを思いつきました:
<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();
});
Fiddle を見てください
編集:追加のHTML要素を追加したくない場合は、JSでのみこれを行うことができます:
$("input").keyup(function(event) {
if (event.keyCode === 13) {
$("button").click();
}
});
まず、jqueryライブラリファイル jquery を追加し、それをHTMLヘッドで呼び出します。
そして、jqueryベースのコードを使用...
$("#id_of_textbox").keyup(function(event){
if(event.keyCode == 13){
$("#id_of_button").click();
}
});
トリガーする必要のあるデフォルトボタンのinput type = "button"がinput type = "submit"に置き換えられた場合に機能します。
W3schools.comのハウツーを見つけました。彼らのtry meページは以下にあります。
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_trigger_button_enter
これは私の通常のブラウザーでは機能しましたが、組み込みのphpブラウザーを使用するphpアプリでは機能しませんでした。
少しいじった後、自分の状況で機能し、他のすべての状況で機能する次の純粋なJavaScriptの代替案を思い付きました。
function checkForEnterKey(){
if (event.keyCode === 13) {
event.preventDefault();
document.getElementById("myBtn").click();
}
}
function buttonClickEvent()
{
alert('The button has been clicked!');
}
HTMLテキストボックス内でEnterキーを押して、ボタンを有効にします。
<br />
<input id="myInput" onkeyup="checkForEnterKey(this.value)">
<br />
<button id="myBtn" onclick="buttonClickEvent()">Button</button>