Нажим входит в Won' t представляют форму - JavaScript

Я строю основное место, где я хочу, чтобы пользователи были в состоянии войти в 'ключевое слово', которое перенаправляет их к определенной странице. Различные ключевые слова перенаправят к различным страницам.

Например, Apple перенаправит к Apple.com (просто пример, не на моем сайте).

Я счел JavaScript другого человека для этого на другом веб-сайте (замеченным ниже). Это работает почти прекрасное за исключением одной незначительной детали - пользователи ДОЛЖНЫ нажать кнопку для перенаправления, чтобы произойти. Нажим клавиши ENTER не работает. Я попытался изменить входной тип, чтобы "подчиниться", а не "застегнуться", но все еще ни к какой удаче. У кого-либо есть некоторый совет?

<script type="text/JavaScript">
<!--
function Login(){
var done=0;
var keyword=document.enter_keyword.keyword.value;
//keyword=keyword.toLowerCase();
if (keyword=="toms") { window.location="http://www.toms.com"; done=1; }
if (keyword=="apple") { window.location="http://www.apple.com"; done=1; }
if (keyword=="orange") { window.location="http://www.orange.com"; done=1; }
if (done==0) { alert("WARNING:Incorrect keyword you plonker!!!"); }
}
//-->
</script> 

</head>

<body>

<form name=enter_keyword>
<table border="1" cellpadding="2" cellspacing="2" bgcolor="#7B97E0">
<tr>
<td>
Enter keyword:
</td>
<td><input type=text name=keyword>
</td>
</tr>
<tr>
<td colspan=2 align=center>
<input type=button value="Login!" onClick="Login()">
</td>
</tr>
</table>
</form>
2

8 ответы

если можно использовать использование jQuery это

$(document).ready(function() {
  $(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});

еще используйте это я установил форму в onsubmit =, "возвращают ложный" и сделал это

<input type="button" value="Submit" onClick="document.Survey.submit()" style="font-size: 1.25em;">

или используйте это

$("#form").submit( function (e) {
    e.preventDefault(); ...}
2
добавлено

It requires a click because the only thing calling the function is the input onClick event. Get rid of onClick="Login()" and change type="submit" in your < input > and add onSubmit="Login()" to your < form >

<script type="text/JavaScript">
<!--
function Login(){
var done=0;
var keyword=document.enter_keyword.keyword.value;
//keyword=keyword.toLowerCase();
if (keyword=="toms") { window.location="http://www.toms.com"; done=1; }
if (keyword=="apple") { window.location="http://www.apple.com"; done=1; }
if (keyword=="orange") { window.location="http://www.orange.com"; done=1; }
if (done==0) { alert("WARNING:Incorrect keyword you plonker!!!"); }
}
//-->
</script> 

</head>

<body>

<form name=enter_keyword onSubmit="Login()">
<table border="1" cellpadding="2" cellspacing="2" bgcolor="#7B97E0">
<tr>
<td>
Enter keyword:
</td>
<td><input type=text name=keyword>
</td>
</tr>
<tr>
<td colspan=2 align=center>
<input type=submit value="Login!">
</td>
</tr>
</table>
</form>
2
добавлено

Как был сказан, проблема состоит в том, что вы полагаетесь onClick событие, чтобы вызвать вашу функцию JavaScript, таким образом, щелчок требуется.

Кроме того, поведение нажима 'Входят' в текстовое поле, чтобы вызвать подчинение формы, зависит от того, чтобы там быть также:

  • Only one text field, OR
  • An <input type='submit'> (or perhaps <button type='submit'>, etc., somewhere on the form.

(Более детальное обсуждение того особого поведения и его whys может быть найдено здесь: Форма, не подчиняющаяся, нажимая, входит)

Так как у вас только есть одно текстовое поле в форме, оно правильно вызывает , представляют , действие, нажимая входит; таким образом необходимо захватить , подчиняются() событие формы, используя onSubmit = признак (или, альтернативно, используя jQuery или некоторый другой код JavaScript, чтобы добавить тот же самый обработчик событий к форме. У пути jQuery есть некоторые преимущества, но это эффективно эквивалентно с этой целью).

<form name="enter_keyword" onSubmit="javascript:redirect(); return false;">

(Я переименовал функцию, чтобы перенаправление() , потому что кажется, что это - то, что мы делаем, больше, чем вход в систему, здесь. Кроме того, ложное возвращение; после того, как вызов функции остановит форму от фактического представления чего-либо, так как мы обращаемся с ним с функцией JavaScript вместо этого. (Без ложное возвращение; , по умолчанию, формы подчинятся URI, установка как форма действие = признак; если это не будет установлено, они подчинятся текущему URL. Возможно и обработать форму с JavaScript и затем представить данные укладчику серверной стороны, также, в этом случае это <закодирует> возвращение, верное (который является дефолтом).)

Я сделал работа jsfiddle этого, наряду с некоторыми другими изменениями (объяснение следует):

<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false"> <div class="snippet-code">

function redirect() {
 //var done=0;
  var keyword = document.enter_keyword.keyword.value;
  //keyword=keyword.toLowerCase();
  //alert(keyword);

  var keyword_map = {
    'toms': 'toms.com',
    'apple': 'apple.com',
    'orange': 'orange.com'
  }

  var protocol = document.location.protocol;//to handle https://, etc., like here on jsfiddle

  if (keyword in keyword_map) {
    var target_url = protocol + '//' + keyword_map[keyword];
    alert("Attempting to redirect you to: " + target_url);
    window.location = target_url;

  } else {
    alert("WARNING:Incorrect keyword you plonker!!!");
  }

  /*
  if (keyword=="toms") { window.location = protocol + "www.toms.com"; done=1; }
  if (keyword=="apple") { window.location = protocol + "www.apple.com"; done=1; }
  if (keyword=="orange") { window.location= protocol + "www.orange.com"; done=1; }
	if (done==0) { alert("WARNING:Incorrect keyword you plonker!!!"); }
  */


}
<form name="enter_keyword" onSubmit="javascript:redirect(); return false;">
  <table border="1" cellpadding="2" cellspacing="2" bgcolor="#7B97E0">
    <tr>
      <td>
        Enter keyword:
      </td>
      <td>
        <input type=text name=keyword>
      </td>
    </tr>
    <tr>
      <td colspan=2 align=center>
        <input type=submit value="Go!">
      </td>
    </tr>
  </table>
</form>
</div> </div>

Вместо жесткого кодирования , если (ключевое слово = "ключевое слово") {window.location = "местоположение"; done=1;} для каждого случая, почему бы не сделать карту словаря (технически объект в JavaScript, но о хорошо) наносящий на карту все доступные ключевые слова к URL?:

  var keyword_map = {
    'toms': 'toms.com',
    'apple': 'apple.com',
    'orange': 'orange.com'
  };

Затем вместо того, чтобы установить done=0 вначале, done=1 в каждом отделении, и проверить в конце, мы можем просто сделать:

  if (keyword in keyword_map) {
   //redirect to keyword_map[keyword]

  } else {
    alert("WARNING:Incorrect keyword you plonker!!!");
  }

И вместо того, чтобы печатать http://www. для каждого местоположения, просто хранят основной URL, и затем применяют протокол каждый раз.

Так, чтобы это могло работать даже на территории, это подается как https://(например, jsfiddle, если вы вошли), мы можем проверить протокол текущей страницы, и просто предварительно быть на рассмотрении это:

  var protocol = document.location.protocol;//to handle https://, etc., like here on jsfiddle

  if (keyword in keyword_map) {
    var target_url = protocol + '//' + keyword_map[keyword];
    alert("Attempting to redirect you to: " + target_url);
    window.location = target_url;

  } else {
    alert("WARNING:Incorrect keyword you plonker!!!");
  }

Теперь у вас есть структура для того, чтобы сделать то, что вы пытались сделать немного более чисто и изящно, и надо надеяться это объяснение служило, чтобы увеличить ваше понимание того, что продолжалось.:)

1
добавлено

Хорошо это довольно нормально. Вы вызвали свою функцию на событии щелчка. Для этого, чтобы произойти необходимо слушать "onSubmit" событие на форме. И необходимо поместить представление вместо кнопки.

0
добавлено
$(document).ready(function() {
 $("input[name=keyword]").keydown(function(event) {

                if ( event.keyCode == 13)
                 {
                        //do something
                 }

            });
});
0
добавлено

This function will trigger the click event of button on pressing enter

$("input[name=keyword]").keyup(function(event){
    if(event.keyCode == 13){
        $("input[type=button]").click();
    }
 });
0
добавлено

используйте onsubmit признак событий в вашей форме:

<form name="enter_keyword"  onsubmit="Login()">

держите входной тип =, подчиняются для кнопки.

0
добавлено

Попытка, изменяющая эту линию:

<input type="button" value="Login!" onClick="Login()">

К этому:

<input type="submit" value="Login!">

и добавьте onSubmit к форме:

<form name="enter_keyword" onSubmit="Login();">

Это - способ, которым я предпочитаю делать это, и он всегда работает на меня.

0
добавлено
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском