복붙노트

[RUBY-ON-RAILS] 내가 폼에있는 버튼을 클릭하면 양식이 제출됩니다. 어떻게 이것을 피하기 위해?

RUBY-ON-RAILS

내가 폼에있는 버튼을 클릭하면 양식이 제출됩니다. 어떻게 이것을 피하기 위해?

나는 트위터 - 부트 스트랩을 사용하고 난 내 양식이 라디오 버튼을 사용하고 싶습니다. 나는이 버튼 중 하나를 클릭 할 때 문제가 양식 즉시 제출됩니다. 어떻게 이것을 피하기 위해? 난 그냥 라디오 버튼과 같은 기본 버튼을 사용합니다.

에서:

<%= form_for @product do |f| %>
    <div class="control-group">
      <%= f.label :type, :class => 'control-label' %>

      <div class="controls">
        <div class="btn-group" data-toggle="buttons-radio">
          <button class="btn">Button_1</button>
          <button class="btn">Button_2</button>
        </div>
      </div>

    </div>

    <div class="form-actions">
      <%= f.submit nil, :class => 'btn btn-primary' %>
      <%= link_to 'Cancel', products_path, :class => 'btn' %>
    </div>
<% end %>

자바 스크립트 :

// application.js
$('.tabs').button();

해결법

  1. ==============================

    1.미세의 HTML5 사양에서 :

    미세의 HTML5 사양에서 :

    그리고 오히려 간단한 <버튼 유형 = "버튼"> 푸시 버튼처럼 행동보다 양식을 제출을 <버튼 유형 = "제출">.

    HTML4 사양은 같은 일을 말한다 :

    당신의 <버튼> 요소 그래서 :

    <button class="btn">Button_1</button>
    <button class="btn">Button_2</button>
    

    (준수 브라우저에서) 다음과 동일합니다 :

    <button type="submit" class="btn">Button_1</button>
    <button type="submit" class="btn">Button_2</button>
    

    그리고 당신이 그 버튼 중 하나를 칠 때마다 당신은 당신의 양식을 제출합니다.

    이 솔루션은 일반 버튼을 사용하는 것입니다 :

    <button type="button" class="btn">Button_1</button>
    <button type="button" class="btn">Button_2</button>
    

    IE의 기본의 일부 버전 입력 = 표준의 말씀에도 불구하고 "버튼"합니다. 은 <버튼>을 사용할 때 당신은 언제나 당신이 당신이 기대하고있는 동작을 얻을 것이다으로 type 속성을 지정해야합니다.

  2. ==============================

    2.이를 위해로 preventDefault ()를 사용할 수 있습니다

    이를 위해로 preventDefault ()를 사용할 수 있습니다

    $('.btn').onClick(function(e){
      e.preventDefault();
    });
    
    <%= form_for @product do |f| %>
        <div class="control-group">
          <%= f.label :type, :class => 'control-label' %>
    
          <div class="controls">
            <div class="btn-group" data-toggle="buttons-radio">
              <button class="btn" type="button">Button_1</button>
              <button class="btn" type="button">Button_2</button>
            </div>
          </div>
    
        </div>
    
        <div class="form-actions">
          <%= f.submit nil, :class => 'btn btn-primary' %>
          <%= link_to 'Cancel', products_path, :class => 'btn' %>
        </div>
    <% end %>
    
  3. ==============================

    3.당신이 직접 사용하는 레일 "버튼"을 옵션으로 유형을 지정하여도 도우미를 형성 할 수 있습니다 :

    당신이 직접 사용하는 레일 "버튼"을 옵션으로 유형을 지정하여도 도우미를 형성 할 수 있습니다 :

    <%= form_for @product do |f| %>
        <div class="control-group">
          <%= f.label :type, :class => 'control-label' %>
    
          <div class="controls">
            <div class="btn-group" data-toggle="buttons-radio">
              <%= f.button "Button_1", type: "button", class: "btn" %>
              <%= f.button "Button_2", type: "button", class: "btn" %>
            </div>
          </div>
    
        </div>
    
        <div class="form-actions">
          <%= f.submit nil, :class => 'btn btn-primary' %>
          <%= link_to 'Cancel', products_path, :class => 'btn' %>
        </div>
    <% end %>
    
  4. from https://stackoverflow.com/questions/9643806/form-is-submitted-when-i-click-on-the-button-in-form-how-to-avoid-this by cc-by-sa and MIT license