Вопрос

У меня есть следующая форма диалога:

<div class='modal' id='myModal'>
  <div class='modal-header'>
    <a class='close' data-dismiss='modal'>×</a>
    <h3>Add Tags</h3>
  </div>

  <div class='modal-body'>
    <form accept-charset="UTF-8" action="/tagging" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="mCNvbvoPFWhD7SoJm9FPDh+BcRvCG3d16P+oOFACPuc=" /></div>
        <input id="tags_string" name="tags_string" type="text" value="luca" />
        <input id="id" name="id" type="hidden" value="4f1c95fd1d41c80ff200067f" />
    </form>
  </div>

  <div class='modal-footer'>
    <div class='btn btn-primary'><input name="commit" type="submit" value="Add tag" /></div>
  </div>
</div>

и его JS:

<script>
  //<![CDATA[
    $(function() {
      // wire up the buttons to dismiss the modal when shown
      $("#myModal").bind("show", function() {
        $("#myModal a.btn").click(function(e) {
          // do something based on which button was clicked
          // we just log the contents of the link element for demo purposes
          console.log("button pressed: "+$(this).html());
          // hide the dialog box
          $("#myModal").modal('hide');
        });
      });
      // remove the event listeners when the dialog is hidden
      $("#myModal").bind("hide", function() {
          // remove event listeners on the buttons
          $("#myModal a.btn").unbind();
      });
      // finally, wire up the actual modal functionality and show the dialog
      $("#myModal").modal({
        "backdrop" : "static",
        "keyboard" : true,
        "show" : true // this parameter ensures the modal is shown immediately
      });
    });
  //]]>
</script>

Когда я нажимаю x, что <a class='close' data-dismiss='modal'>×</a>, Форма закрывается, оставляя меня на текущей странице, в то время как я хотел бы пойти на HAMEPAGE.

Также «добавить тег» Боттон, который <div class='btn btn-primary'><input name="commit" type="submit" value="Add tag" /></div> Ничего не делайте, когда нажимает на кнопку ввода jaust на клавиатуре, выполните задание, и я хотел бы нажать «Добавить тег», сделал то же самое.

Я не так опытен на JS и передний проги, так что любая помощь приветствуется.

Это было полезно?

Решение

Ваша кнопка отправки находится за пределами тегов формы.
Он не будет знать, какую форму отправить.

Используйте JavaScript, чтобы подключить его к форме.

<div class='modal-body'>
    <form id="modal-form" accept-charset="UTF-8" action="/tagging" data-remote="true" method="post">
        <input name="something" value="Some value" />
    </form>
  </div>

<div class='modal-footer'>
    <a id="modal-form-submit" class='btn btn-primary' href="#">Submit</a>
</div>

<script>
  $('#modal-form-submit').on('click', function(e){
    // We don't want this to act as a link so cancel the link action
    e.preventDefault();

    // Find form and submit it
    $('#modal-form').submit();
  });
</script>

Для <a class='close' data-dismiss='modal'>×</a> это должно быть связано с домашней страницей, почему бы просто не удалить data-dismiss='modal' и заставить его вести себя как обычная ссылка, используя стандарт href='home.html'.

Вот какой -то дополнительный код, чтобы указать вам в правильном направлении для использования Ajax для отправки формы:

// Since we want both pressing 'Enter' and clicking the button to work
// We'll subscribe to the submit event, which is triggered by both

$('#modal-form').on('submit', function(){

  //Serialize the form and post it to the server
  $.post("/yourReceivingPage", $(this).serialize(), function(){

    // When this executes, we know the form was submitted

    // To give some time for the animation, 
    // let's add a delay of 200 ms before the redirect
    var delay = 200;
    setTimeout(function(){
      window.location.href = 'successUrl.html';
    }, delay);

    // Hide the modal
    $("#my-modal").modal('hide');

  });

  // Stop the normal form submission
  return false;
});

Другие советы

Чтобы получить Отправить кнопку Работа положите его в форму.

<div class="modal">
    <form id="modal-form" action="/tagging" data-remote="true" method="post">
        <div class="modal-header">
            <a class="close" data-dismiss="modal">×</a>
            <h3>A Modal Form</h3>
        </div>
        <div class="modal-body">
            <input name="something" value="Some value" />
        </div>
        <div class="modal-footer">
            <a href="#" class="btn" data-dismiss="modal">Cancel</a>
            <input type="submit" value="Save" class="btn btn-primary" />
        </div>
    </form>
</div>

Тем не менее, это добавляет неожиданный край в нижней части модала. Bootstrap 2.0.2 представил modal-form учебный класс Чтобы исправить это или вы можете исправить это самостоятельно с помощью определения стиля, например:

.modal > form {
    margin-bottom: 0;
}

За Ссылка на другую страницу при закрытии модала Я иду вместе с Theshellfishmeme

Что касается ×, который должен быть связан с домашней страницей, почему бы не удалить данные data-dismiss = 'modal' и заставить ее действовать как обычная ссылка, используя стандартную href = 'home.html'.

С HTML5 у вас может быть что -то вроде этого:

<div class="modal" id="myModal">
  <div class="modal-header">
    <a class="close" data-dismiss="modal">×</a>
    <h3>Add Tags</h3>
  </div>

  <div class="modal-body">
    <form id="my_form" accept-charset="UTF-8" action="/tagging" data-remote="true" method="post">
        <div style="margin:0;padding:0;display:inline">
          <input name="utf8" type="hidden" value="&#x2713;" />
          <input name="authenticity_token" type="hidden" value="mCNvbvoPFWhD7SoJm9FPDh+BcRvCG3d16P+oOFACPuc=" />
        </div>
        <input id="tags_string" name="tags_string" type="text" value="luca" />
        <input id="id" name="id" type="hidden" value="4f1c95fd1d41c80ff200067f" />
    </form>
  </div>

  <div class="modal-footer">
    <div class="btn btn-primary"><input name="commit" type="submit" value="Add tag" form="my_form" /></div>
  </div>
</div>

Это называется в HTML5 Форма, ассоциированный элемент Курс, если вам нужно поддерживать все браузеры + старые, вам нужно пойти с JavaScript, но вы можете использовать JavaScript в качестве запасного :)

Проблема для подачи формы лежит в собственной библиотеке JS Modal JS (Bootstrap -Modal.js) - Основное событие отправки предотвращается из -за строки № 204: ev.preventDefault (Почему?).

Мое решение было добавить:

if(!$(e.target).parents('form'))
   e.preventDefault();

Однако я не знаю, какие проблемы он появится.

К вашему сведению, вы можете сделать следующее (написано в нефрит):

.modal.hide.fadel
  form.modal-form
    .modal-header
        button.close type='button' data-dismiss="modal" x
        h3= t 'translation'
    .modal-body
        p hello
    .modal-footer
        button.btn data-dismiss="modal" href="#" = t 'close'
        a.btn.btn-primary data-dismiss="modal" data-remote="true" href="#"= t 'form.submit'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top