2016-04-11 3 views
3
$("form").submit(function() { 
     if ($("#content") != null) { 
      $("#content").replaceWith('<div id="page-loader" class="fade in"><span class="spinner"></span><span class="spinner-text center">We are running as fast as our little ninja feet can go...</span></div>'); 
     } 
     return true; 
    }); 

Данное приложение отлично работает в Chrome, но не работает в Firefox. Не знаете, почему, но в Firefox форма фактически не отправлена. div заменяет работы, но нет любви на отправке, страница просто остается без дела.

Целью здесь является захват представления любой формы и набросание счетчика (CSS не изображение) на страницу до тех пор, пока сообщение/вернулся и вертушка вытерты от фактического содержимого DIV на перезагрузки страницы (без AJAX)

До:.

Before

После:

After

Удален код (теперь появляется сообщение):

Code Removed

<form accept-charset="UTF-8" action="https://stackoverflow.com/users/sign_in" class="new_user" id="new_user" method="post" role="form"> 
  <!-- begin row --> 
      <div class="row"> 
       <!-- begin col-12 --> 
       <div class="col-lg-6"> 
        <div class="form-group"><label class="sr-only control-label" for="user_email">Email</label><input autofocus="autofocus" class="form-control" id="user_email" name="user[email]" placeholder="E-mail" type="email" value="" /></div> 
       </div> 
       <div class="col-lg-6"> 
        <div class="form-group"><label class="sr-only control-label" for="user_password">Password</label><input class="form-control" id="user_password" name="user[password]" placeholder="Password" type="password" /></div> 
       </div> 
      </div> 
      <!-- end row --> 
      <!-- begin row --> 
      <div class="row"> 
       <!-- begin col-12 --> 
       <div class="col-md-12 center"> 
        </br> 
       </div> 
      </div> 
      <!-- end row --> 
      <!-- begin row --> 
      <div class="row"> 
       <!-- begin col-12 --> 
       <div class="col-md-12 center"> 
        <input class="btn" name="commit" type="submit" value="Sign in" /> 
        <div class="m-t-20"> 

<a href="https://stackoverflow.com/users/password/new">Forgot your password?</a><br/> 

<a href="https://stackoverflow.com/users/confirmation/new">Didn&#39;t receive confirmation instructions?</a><br/> 

<a href="https://stackoverflow.com/users/unlock/new">Didn&#39;t receive unlock instructions?</a><br/> 

        </div> 
       </div> 
      </div> 
      <!-- end row --> 

<script> 
$(document).ready(function() { 
    App.init(); 

    $("form").submit(function(){ 
     if ($("#content") != null) { 
      $("#content").replaceWith('<div id="page-loader" class="fade in"><span class="spinner"></span><span class="spinner-text center">We are running as fast as our little ninja feet can go...</span></div>'); 
     } 
     return true; 
     alert("Submitted"); 
    }); 
}); 

$(function() { 
    var hash = window.location.hash; 
    hash && $('ul.nav a[href="' + hash + '"]').tab('show'); 
}); 

UPDATE:

Ok так я идиот, но по какой-то причине это не приходила мне в голову. Что происходит, так это то, что div #content включает форму, которую я заменяю. Итак, тайна для меня - это то, что работало в Chrome/IE, а не в Firefox?

Если я использую следующий он работает, но я получаю некоторые свисающие элементы формы:

$("form").submit(function(){ 
     if ($("#content") != null) { 
      $("#content").append('<div id="page-loader" class="fade in"><span class="spinner"></span><span class="spinner-text center">We are running as fast as our little ninja feet can go...</span></div>'); 
     } 
     return true; 
    }); 
+0

сделал вам проверить вкладку сети? – uzaif

+0

попытайтесь перезагрузить сервер и перезагрузите всю страницу снова, это сработает .... – uzaif

+0

Я попытался перезагрузить сервер, я добавил трассировку сети, очевидно, что форма не отправлена. Когда я удаляю этот код, он работает нормально. –

ответ

0

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

$("#submit_form_id").on("click", 
function(e){ 
e.preventDefault(); 

//your specific code 
$("#formId").submit(); 
}); 

И все будет хорошо!

+0

Нет любви, попробовал этот подход раньше ... Я даже попробовал его #new_user вместо общей «формы». –

0

попробовать это,

$(document).ready(function(){ 
    $("form").submit(function(){ 
if ($("#content") != null) { 
      $("#content").replaceWith('<div id="page-loader" class="fade in"><span class="spinner"></span><span class="spinner-text center">We are running as fast as our little ninja feet can go...</span></div>'); 
     } 
     return true; 
     alert("Submitted"); 
    }); 
}); 
+0

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

+0

'if ($ (" # content ")!= null) 'вместо' if ($ ('# content'). val()! = '') 'попробуйте это, это должно помочь вам, я уверен – JohnPaul

+0

Итак, показывается счетчик, если я заблокирую счетчик от показа форма отправляется с использованием js. Я считаю, что это что-то с dom и как firefox справляется с этим. Если я просто оставлю js без добавления счетчика, все будет хорошо ... интересно, следует ли мне использовать .append в теле, а не в .replace –

Смежные вопросы