Попробуйте
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'>
[ пересмотр 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;
Можно захватить keydown на форме в JavaScript и предотвратить ровное пузырение, я думаю. ВВЕДИТЕ в веб-страницу, в основном просто отправляет форму, в которую помещается в настоящее время выбираемое управление.
Клавиша ENTER просто активирует кнопку отправки формы по умолчанию, которая будет первым
<input type="submit" />
, браузер находит в форме.
Поэтому не имеют кнопки отправки, но чего-то как
<input type="button" value="Submit" onclick="submitform()" />
<час> РЕДАКТИРОВАНИЕ : В ответ на обсуждение в комментариях:
Это не работает, если у Вас есть только одно текстовое поле - но это может быть, это - желаемое поведение в этом случае.
другая проблема - то, что это полагается на JavaScript для представления формы. Это может быть проблемой с точки зрения доступности. Это может быть решено путем записи <input type='button'/>
с JavaScript и затем поместило <input type='submit' />
в <noscript>
тег. Недостаток этого подхода состоит в том, что для отключенных JavaScript браузеров у Вас тогда будут представления формы на, ВХОДЯТ. Это до OP для решения то, что является желаемым поведением в этом случае.
я не знаю ни о каком способе сделать это, не вызывая JavaScript вообще.
Необходимо будет вызвать эту функцию 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();
}
}
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()">
Вот обработчик 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;
});
});
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.
Вот то, как я сделал бы это:
window.addEventListener('keydown', function(event)
{
if (event.key === "Enter")
{
if(event.target.type !== 'submit')
{
event.preventDefault();
return false;
}
}
}