Форма ввода HTML5 появляется снова после отправки и скрытия - PullRequest
1 голос
/ 30 марта 2012

Когда пользователь вводит какой-то текст в мою форму и нажимает кнопку, я хочу скрыть форму и показать пользователю сообщение "спасибо", чтобы сообщить, что я получил свой текст.

Byкстати, это для встраивания во всплывающее окно расширения Chrome.

Вот что у меня есть:

<!doctype html>
<html>
  <head>
    <title>Extension</title>
    <style>
      body {
        min-width:200px;
        min-height:75px;
        overflow-x:hidden;
      }

      img {
        margin:5px;
        border:2px solid black;
        vertical-align:middle;
        width:75px;
        height:75px;
      }

      .visible{
        display:block;
      }

      .invisible{
        display: none;
      }
    </style>

    <script>
      var PopupController = function () {
          this.button_ = document.getElementById('button');
          this.form_ = document.getElementById('userIdForm');
          this.userId_ = document.getElementsByName('userID')[0];
          this.submitThanks_ = document.getElementById('submitThanks');
          this.addListeners_();
      };

      PopupController.prototype = {
          button_: null,
          form_: null,
          userId_: null,
          submitThanks_: null,

          addListeners_: function () {
              this.button_.addEventListener('click', this.handleClick_.bind(this));
          },

          handleClick_: function () {
              console.log("Submit button clicked");
              var userId = this.userId_.value;

              // Hide the form
              this.form_.classList.add('invisible');
              this.submitThanks_.classList.remove('invisible');
          }
      };

    </script>
  </head>
  <body onload="window.controller = new PopupController()">
    <h2 class="invisible" id="submitThanks">Thanks!</h2>
    <div id="userIdForm">
      <form>
        <input type="text" name="userID" placeholder="User ID" required/>
        <button id="button" type="submit">Submit</button>
      </form>
    </div>
  </body>
</html>

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

Я использую последнюю версию Chrome для Mac.

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

Это потому, что ваша кнопка является кнопкой «отправить».Поэтому, когда вы нажимаете на нее, она выполняет свое стандартное поведение - отправка формы.Это делает HTTP-запрос, и ваша страница обновляется.Если вы не хотите, чтобы это происходило, просто измените тип кнопки на «кнопка».

1 голос
/ 30 марта 2012

Форма перезагружается, потому что страница перезагружается, попробуйте вернуть false из вашей отправки.

<button id="button" type="submit" onclick="return false;">Submit</button>

Редактировать

Ах, извините за это. То есть страница не перезагружается?

Возможно, попробуйте это вместо:

      handleClick_: function () {
          console.log("Submit button clicked");
          var userId = this.userId_.value;

          // Hide the form
          this.form_.className = "invisible";
          this.submitThanks_.className = "visible";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...