javascript - 表单提交字段为空白。使用 Javascript 隐藏和显示字段

标签 javascript ruby ruby-on-rails-3 forms

我的问题是,当我填写此表格并提交时。当我在 origin_city_search div 上时,它总是将 Origin_Radius 提交为空

我对这个问题的假设是,由于我有两个名称相同的相同字段(Origin_Radius),因此它总是采用最后一个字段的值。在下面的形式中,它是 origin_zip_search DIV 中的形式...半径形式有效...只是不是 origin_city_search DIV 中的形式。

任何关于如何让它在每个 div 上提交 Origin_Radius 的指示都会很棒。

HTML

<form accept-charset="UTF-8" action="/searches" id="search_form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="KXseapxrgZ3SwnhQZNAG+D0RD+/ydVxAXFQ2OkyaDb4=" /></div>
<input id="search_user_id" name="search[user_id]" type="hidden" value="10181" />
<div class='control-group'>
<label class="control-label" for="origin_cs_Origin">Origin</label>
<div class='controls'>
<div id='origin_city_search' style='display:block;'>
<input autocomplete="true" class="appendedInput span7" data-autocomplete-internal="true" id="search_origin_cs" name="search[origin_cs]" placeholder="City, ST" style="z-index:3;" type="text" value="" />
<input class="appendedInput span3" id="search_origin_radius" name="search[origin_radius]" placeholder="Radius" type="text" value="" />
</div>
<div id='origin_zip_search' style='display:none;'>
<input class="span7" id="search_origin_zip" name="search[origin_zip]" placeholder="Zipcode" type="text" value="" />
<input class="appendedInput span3" id="search_origin_radius" name="search[origin_radius]" placeholder="Radius" type="text" value="" />
</div>
<div id='origin_state_search'>
<input class="span10" data-states="" id="search_origin_states" name="search[origin_states]" placeholder="Enter Multiple States" style="display:none;" type="text" value="" />
</div>
<div class='btn-group'>
<a class='active btn' href='javascript:void()' id='origin_city_search_boolean'>City Search</a>
<a class='btn' href='javascript:void()' id='origin_state_search_boolean'>State Search</a>
<a class='btn' href='javascript:void()' id='origin_zip_search_boolean'>Zip Search</a>
</div>
</div>
</div>

查看:

  .control-group 
    =label :origin_cs, "Origin", {:class => "control-label"}
    .controls
      -(zip_display = "none";state_display = "none";city_display = "block";city_active ="active";state_active="";zip_active = "") if search.origin_states.blank? and search.origin_zip.blank?
      -(zip_display = "none";state_display = "block";city_display = "none";state_active = "active";city_active="";zip_active = "") unless search.origin_states.blank? and search.origin_zip.blank?
      -(zip_display = "block";state_display = "none";city_display = "none";zip_active = "active";state_active = "";city_active="") unless search.origin_states.blank? and search.origin_cs.blank?
      #origin_city_search{style: "display:#{city_display};"}
        =text_field_tag "search[origin_cs]", "", {:placeholder =>ADDRESSHOLDER, :class => "appendedInput span7", style: "z-index:3;", autocomplete: "true", "data-autocomplete-internal" => "true"}
        =text_field_tag "search[origin_radius]","", {:placeholder =>"Radius", :class => "appendedInput span3"}
      #origin_zip_search{style: "display:#{zip_display};"}
        =text_field_tag "search[origin_zip]", "", {:placeholder => "Zipcode", class: 'span7'}
        =text_field_tag "search[origin_radius]","", {:placeholder =>"Radius", :class => "appendedInput span3"}
      #origin_state_search
        =text_field_tag "search[origin_states]", "", {placeholder: "Enter Multiple States", class: 'span10', "data-states" => states_searched(search.origin_states), style: "display:#{state_display};"}
      .btn-group
        %a.btn{href: "javascript:void()", id: "origin_city_search_boolean", class: "#{city_active}"} City Search
        %a.btn{href: "javascript:void()", id: "origin_state_search_boolean", class: "#{state_active}"} State Search
        %a.btn{href: "javascript:void()", id: "origin_zip_search_boolean", class: "#{zip_active}"} Zip Search        

Javascript

$(document).on "click", "#origin_state_search_boolean", -> 
  $(this).addClass("active")
  $('#origin_city_search_boolean').removeClass("active")
  $("#origin_city_search").hide()
  $("#origin_city_search input").each ->
    $(this).val("")
  $('#origin_zip_search_boolean').removeClass("active")
  $("#origin_zip_search").hide()
  $("#origin_zip_search input").each ->
    $(this).val("")
  $("#origin_state_search").show()
  unless $('#origin_state_search .token-input-list-facebook').length
    $("#search_origin_states").tokenInput("/searches/states.json", theme: "facebook", prePopulate: $.parseJSON($('#search_origin_states').attr("data-states")), placeHolderText: "Enter States Here") 

$(document).on "click", "#origin_zip_search_boolean", -> 
  $(this).addClass("active")
  $('#origin_city_search_boolean').removeClass("active")
  $("#origin_city_search").hide()
  $("#origin_city_search input").each ->
    $(this).val("")
  $('#origin_state_search_boolean').removeClass("active")
  $("#origin_state_search").hide()
  $("#origin_state_search input").each ->
    $(this).val("")
  $("#origin_zip_search").show()

$(document).on "click", "#origin_city_search_boolean", -> 
  $(this).addClass("active")
  $('#origin_state_search_boolean').removeClass("active")
  $("#origin_city_search").show()
  $("#search_origin_states").val("")
  $("#origin_state_search .token-input-token-facebook").remove()
  $("#origin_state_search").hide()
  $('#origin_zip_search_boolean').removeClass("active")
  $("#origin_zip_search").hide()
  $("#search_origin_zip").val("")

最佳答案

为每个字段使用不同的名称,不能有 2 个具有相同名称的字段,请使用“origin_radius_cs”和“origin_radius_zip”之类的名称

关于javascript - 表单提交字段为空白。使用 Javascript 隐藏和显示字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330585/

相关文章:

javascript - React 将唯一对象推送到数组中

javascript - 使用 en-US 区域设置获取时区名称

ruby - 如何将一串代码点转换为它代表的字符串?

Ruby:合并包含数组的哈希

ruby-on-rails - 如何配置设备以使用自定义电子邮件布局?

javascript - React : Changed state in Child component. 如何查看父组件的变化?

.net - 当嵌入对象无法显示时如何显示一些文本?

ruby-on-rails - has_many :through, 嵌套多态关系

ruby-on-rails - Rails : Thread. 请求范围数据共享的当前哈希

ruby-on-rails - Ruby on Rails 教程删除用户在 heroku 上不起作用