2013-04-29 2 views
0

На данный момент, если пользователь не вошел в систему, когда пользователь нажимает кнопку, он показывает предупреждение правильно, но затем продолжает фактически отправлять. Я бы хотел, чтобы он показывал предупреждение, но затем остался на текущей странице (т. Е. Не направлялся на страницу отправки). Как я могу это сделать?показать предупреждение после нажатия кнопки отправки, но без фактического представления

<% if current_user %> 
     <div class="form-actions"> 
      <%= f.button :submit, :class => "btn btn-info btn-large" %> 
     </div> 
    <% else %> 
     <%= f.button :submit, :class => "btn btn-info btn-large", :onclick => 'alert("You need to be logged in to add comments!")'%> 
    <% end %> 
+0

попробуйте вернуть false в обработчик onclick – jul

+1

@jul: возврат 'false' не останавливает событие от распространения/барботажа ... прочитайте ссылку в моем ответе для получения более подробной информации –

ответ

1

Добавить функцию JS на страницу, и написать это:

<%= f.button :submit, :class => "btn btn-info btn-large", :onclick => 'submitAlert(event)'%> 

функция JS может выглядеть следующим образом:

function submitAlert(e) 
{ 
    e = e || window.event; 
    alert('You need to be logged in to add comments!'); 
    if (e.preventDefault) 
    {//most browsers 
     e.preventDefault(); 
     e.stopPropagation(); 
    } 
    e.returnValue = false; 
    e.cancelBubble= true; 
} 

Узнайте больше об остановке событий here это довольно интересно (и важно знать)

+0

отлично, спасибо – tessad

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