Как предотвратить, ВВОДЯТ нажатие клавиши для представления веб-формы?

Попробуйте

let radioButton1 = document.querySelectorAll("[name=skMin]").forEach(function(e,i,a) {
    e.addEventListener('click', (event) => {
        a.forEach(x=>x.style.background = 'white')
        e.style.background = 'cyan'
        //drillSession.skillMin = e.value       
    })
})
<span>Minimum Skill Level:</span><br />
<input type='button' id='skMin1' class='btn-sm' name='skMin' value='1' checked>
<input type='button' id='skMin2' class='btn-sm' name='skMin' value='2'>
<input type='button' id='skMin3' class='btn-sm' name='skMin' value='3'>
<input type='button' id='skMin4' class='btn-sm' name='skMin' value='4'>
<input type='button' id='skMin5' class='btn-sm' name='skMin' value='5'>

198
задан T.J. Crowder 19 December 2016 в 03:51
поделиться

8 ответов

[ пересмотр 2012, никакой встроенный обработчик, сохраняет текстовую область, вводят обработку]

function checkEnter(e){
 e = e || event;
 var txtArea = /textarea/i.test((e.target || e.srcElement).tagName);
 return txtArea || (e.keyCode || e.which || e.charCode || 0) !== 13;
}

Теперь, можно определить обработчик нажатий клавиши на форме:
<забастовка> < форма [...] onkeypress = "возвращает checkEnter (событие)" >

document.querySelector('form').onkeypress = checkEnter;
96
ответ дан KooiInc 23 November 2019 в 05:12
поделиться

Можно захватить keydown на форме в JavaScript и предотвратить ровное пузырение, я думаю. ВВЕДИТЕ в веб-страницу, в основном просто отправляет форму, в которую помещается в настоящее время выбираемое управление.

1
ответ дан Neil Barnwell 23 November 2019 в 05:12
поделиться

Клавиша ENTER просто активирует кнопку отправки формы по умолчанию, которая будет первым

<input type="submit" />

, браузер находит в форме.

Поэтому не имеют кнопки отправки, но чего-то как

<input type="button" value="Submit" onclick="submitform()" /> 
<час>

РЕДАКТИРОВАНИЕ : В ответ на обсуждение в комментариях:

Это не работает, если у Вас есть только одно текстовое поле - но это может быть, это - желаемое поведение в этом случае.

другая проблема - то, что это полагается на JavaScript для представления формы. Это может быть проблемой с точки зрения доступности. Это может быть решено путем записи <input type='button'/> с JavaScript и затем поместило <input type='submit' /> в <noscript> тег. Недостаток этого подхода состоит в том, что для отключенных JavaScript браузеров у Вас тогда будут представления формы на, ВХОДЯТ. Это до OP для решения то, что является желаемым поведением в этом случае.

я не знаю ни о каком способе сделать это, не вызывая JavaScript вообще.

16
ответ дан DanSingerman 23 November 2019 в 05:12
поделиться

Необходимо будет вызвать эту функцию whic, просто отменит значение по умолчанию, отправляют поведение формы. Можно присоединить его к любому полю ввода или событию.

function doNothing() {  
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
    if( keyCode == 13 ) {


    if(!e) var e = window.event;

    e.cancelBubble = true;
    e.returnValue = false;

    if (e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
}
24
ответ дан DanSingerman 23 November 2019 в 05:12
поделиться

Simply return false from the onsubmit handler

<form onsubmit="return false;">

or if you want a handler in the middle

<script>
var submitHandler = function() {
  // do stuff
  return false;
}
</script>
<form onsubmit="return submitHandler()">
46
ответ дан 23 November 2019 в 05:12
поделиться

Вот обработчик jQuery, который можно использовать для остановки отправки ввода, а также остановить клавишу Backspace -> назад. Пары (Keycode: SelectionString) в объекте «Keystop» используются для сопоставления узлов, которые не должны выстрелить их действие по умолчанию.

Помните, что веб должен быть доступным местом, и это нарушает ожидания пользователей клавиатуры. Тем не менее, в моем случае веб-приложение я работаю, не нравится кнопка «Назад» в любом случае, поэтому отключение его ключа ярлыка в порядке. «Должна ввести -> отправить» обсуждение важно, но не связано с реальным вопросом.

Вот код, до вас, чтобы подумать о доступности и почему вы на самом деле хотите сделать это!

$(function(){
 var keyStop = {
   8: ":not(input:text, textarea, input:file, input:password)", // stop backspace = back
   13: "input:text, input:password", // stop enter = submit 

   end: null
 };
 $(document).bind("keydown", function(event){
  var selector = keyStop[event.which];

  if(selector !== undefined && $(event.target).is(selector)) {
      event.preventDefault(); //stop event
  }
  return true;
 });
});
55
ответ дан 23 November 2019 в 05:12
поделиться
stopSubmitOnEnter (e) {
  var eve = e || window.event;
  var keycode = eve.keyCode || eve.which || eve.charCode;

  if (keycode == 13) {
    eve.cancelBubble = true;
    eve.returnValue = false;

    if (eve.stopPropagation) {   
      eve.stopPropagation();
      eve.preventDefault();
    }

    return false;
  }
}

Тогда в вашей форме:

<form id="foo" onkeypress="stopSubmitOnEnter(e);">

, хотя, было бы лучше, если вы не использовали навязчивый JavaScript.

4
ответ дан 23 November 2019 в 05:12
поделиться

Вот то, как я сделал бы это:

window.addEventListener('keydown', function(event)
{
    if (event.key === "Enter")
    {
        if(event.target.type !== 'submit')
        {
            event.preventDefault();
            return false;
        }
    }
}
0
ответ дан 23 November 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: