2013-05-07 3 views
0

내가 텍스트 상자에 세 가지 중 하나를 렌더링하고 jQuery를 사용하여 blelow 양식 그래서레일은 매우 이상한

<%= f.select(:title, options_for_select([['Pick a reason',{:value => 0}],['Title 2', {:value => 1}], ['Title 3', {:value => 3}])) %> 

누군가가 드롭 다운에서 세 가지 옵션 중 하나를 선택합니다 선택이 제출 된 지 형성한다.

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"0", :style=>"display:none;", :value=>" text for pick reason"%> 

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"1", :style=>"display:none;", :value=>" text for title 1"%> 

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"2", :style=>"display:none;", :value=>" text for title 2"%> 

하지만 어떤 옵션이 선택 되더라도 마지막 text_area 항목은 db에 저장됩니다. 이 경우 해당 내용은

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"2", :style=>"display:none;", :value=>" text for title 2"%> 

어떻게 피할 수 있습니까? 그리고 화면에 표시된 것이 db에 저장되는지 확인하십시오.

또한 여기

<script> 
$(document).ready(function(){ 
    $('#bashing_title').change(function(){ 
     $(".selectInput").hide(); 
     $("#"+this.selectedIndex).show(); 
    }); 
}); 

</script> 

답변

1

텍스트 영역을 시각적으로 숨기고 있지만 모든 것이 제출되는 것을 막지는 못합니다. 마지막으로 직렬화 할 값은 아닙니다. Rails에서 사용됩니다.

대신, 하나의 텍스트 상자를 가지고 있고, 선택한 옵션에 따라 콘텐츠를 수정해야합니다 : 내가 자리 표시 자, UX의 일부없이`remove` 나던 작업이 필요

<% text_values = {"text0" => "text for pick reason", 
        "text1" => "text for title1", 
        "text2" => "text for title2" } %> 
<%= f.text_area :text , :rows => 10, :class=>"selectInput", 
       :style=>"display:none;", :value => "", 
       :data => text_values %> 

<script> 
    $(function(){ 
    $('#bashing_title').change(function(){ 
     var textArea = $(".selectInput"); 
     textArea.show().val(textArea.data('text' + this.selectedIndex)); 
    }); 
    }); 
</script> 
+0

텍스트를 입력 할 수없는 텍스트 상자가로드됩니다. – psharma

+0

텍스트 상자는 처음에 숨겨져 있습니다. 옵션을 선택할 때만 표시됩니다. 이것을 원하지 않는다면 선언에서': style => 'display : none;''을 제거하면됩니다. – PinnyM

+0

그래도 옵션을 선택해도 표시되지 않습니다 – psharma

0

가 왜 textarea 대신 value에서 placeholder를 사용하지 않는 내 JQuery와 무엇입니까?

<%= f.text_area :text , :rows => 10, :class=>"selectInput", :id=>"2", :style=>"display:none;", :placeholder=>" text for title 2"%> 

문제가 계속 발생하는 경우 해당 필드가 여전히 DOM에 있기 때문일 수 있습니다. 당신의 jQuery 코드를 으로 바꾸어보십시오. hide()

+0

합니다. – psharma

+0

에는 자리 표시자가 필요합니까? 논리적으로, 위에 제시된 목적을 위해 사용해야합니다. 다른 용도로 사용해야합니까? – kiddorails

+0

죄송합니다. 자리 표시자가 없으면 값이 있어야하고 자리 표시자가 필요하지 않습니다. (작은 스트레스가 가해 짐 : P) – psharma