form表单提交了多个checkbox怎么获取复选框的值存入数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了form表单提交了多个checkbox怎么获取复选框的值存入数组?相关的知识,希望对你有一定的参考价值。

在form表单中有多个checkbox,我设置了name相同=checkbox,checkbox的value是动态读取填充的!经过submit后,我在接收页面是这样接收的,代码如下:
dim check() as string '存放复选框value的数组
dim i as integer = 0

redim Preserve check(i)
for i = 0 to check.length - 1
type(i) = request.form("checkbox")
next
i= i + 1

经过循环输出后结果是这样的: (PS:1,2,3,4,5 是checkbox的value)
1,2,3,4,5

并不是我想象中的:
1
2
3
4
5

疑问:我要如何在提交页面设置,如何在接收页面获取并且存储到数组才能达到我想要的效果
我最终是要循环遍历这个数组的哈!请各位大神多多指教,最好是直接给出示例代码,谢谢!

例:

<scriptsrc="http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js"></script>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="1"/>

<label>幻觉</label>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="2"/>

<label>交流困难</label>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="3"/>

<label>猜疑</label>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="4"/>

<label>喜怒无常</label>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="5"/>

行为怪异

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="6"/>

兴奋话多

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="7"/>

<label>伤人毁物</label>

<br/>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="8"/>

<label>悲观厌世</label>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="9"/>

<label>无故外走</label>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="10"/>

<label>自言自语</label>

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="11"/>

孤僻懒散

<inputname="Jszzdm1"id="Jszzdm1"type="checkbox"value="12"/>其他

<inputtype="hidden"name="Jszzdm"id="Jszzdm"value="@Model.Jszzdm"/>

<script>

$('input[type=checkbox]').change(function()

$('#Jszzdm').val($('input[type=checkbox]:checked').map(function()returnthis.value).get().join(','))

)

</script>

<inputtype="button"value="GET"onclick="alert($('#Jszzdm').val())"/>

扩展资料

from表单中checkbox的多选,ajax转入后台,后台接受

varcheck=[];//定义一个空数组

$("input[name='category']:checked").each(function(i)//把所有被选中的复选框的值存入数组

check[i]=$(this).val();

);

$.ajax(

type:"post",

url:"$ctx/ask/ask/check",

data:"check":check,

traditional:true,

datatype:"json",

success:function(dates)

,

error:function()

alert("失败,请稍后再试!");

);

参考技术A dim check()
dim i
redim check(request.form("checkbox").count - 1)
for i = 0 to ubound(check)
check(i) = request.form("checkbox")(i + 1)
next

或者:

dim check()
check = Split(request.form("checkbox"), ", ")

建议用第一种方法,是标准用法,下面那种是走偏门追问

大神感谢你的关注!
第一种方法:提示没有count这个东东,我换成length倒是可以了,但是最终存到数组后,还是跟我先前的一样的!

第二种方法输出check()提示string[]什么···,我不知道哪里出了问题

大神麻烦你再看看,最好你自己运行一下,再把答案贴上来哈 无比感谢

追答

哦,原来你的不是ASP,骚瑞!

本回答被提问者采纳

Rails 4 Form: has_many through: checkboxes

【中文标题】Rails 4 Form: has_many through: checkboxes【英文标题】: 【发布时间】:2015-05-30 13:51:47 【问题描述】:

原始问题

两个资源:usersanimals. 创建用户时,客户端选中复选框来说明他们有多少动物。

当提交用户表单时,它不仅应该创建一个新的user 记录,还应该在animal_users 富连接表中创建一堆记录来代表客户端选择的每个复选框。

我认为的问题是我没有为表单中的复选框部分正确指定某些内容。我查看了checkbox_tag API、Rails Guides on Forms 以及许多网站和 *** 帖子。

提前致谢,代码如下:

原始代码(答案代码再往下)

型号:

#models/user.rb
class User < ActiveRecord::Base
  has_many :animals, through: :animal_users
  has_many :animal_users
  accepts_nested_attributes_for :animal_users, allow_destroy: true
end

#models/animal.rb
class Animal < ActiveRecord::Base
  has_many :users, through: :animal_users
  has_many :animal_users
end

#models/animal_user.rb
class AnimalUser < ActiveRecord::Base
  belongs_to :animal
  belongs_to :user
end

user 表单

#views/users/_form.html.erb
    <%= form_for(@user) do |f| %>
  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>

  <div>
    <% Animal.all.each do |animal| %>
    <label>
        <%= check_box_tag "user[animal_ids][]", animal.id, f.object.animals.include?(animal) %>
        <%= animal.animal_name %>
    <% end %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

users_controller.rb

中的强参数
def user_params
      params.require(:user).permit(:name, animal_users_attributes: [:_destroy, :id, :user_id, :animal_id])
end

此处回复代码

型号:

#models/user.rb
class User < ActiveRecord::Base
  has_many :animals, through: :animal_users
  has_many :animal_users
end

#models/animal.rb
class Animal < ActiveRecord::Base
  has_many :users, through: :animal_users
  has_many :animal_users
end

#models/animal_user.rb
class AnimalUser < ActiveRecord::Base
  belongs_to :animal
  belongs_to :user
end

user 表单

#views/users/_form.html.erb
<%= form_for(@user) do |f| %>
  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>

  # Checkbox part of the form that now works!
    <div>
      <% Animal.all.each do |animal| %>
        <%= check_box_tag "user[animal_ids][]", animal.id, f.object.animals.include?(animal) %>
        <%= animal.animal_name %>
      <% end %>
    </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

users_controller.rb

中的强参数
  def user_params
    params.require(:user).permit(:name, animal_ids: [])
  end

为了完整起见,以下是表单提交时传递到服务器的内容:

Parameters: "utf8"=>"✓", "authenticity_token"=>"xyz=", "user"=>"name"=>"Neil", "animal_ids"=>["1", "3"], "commit"=>"Create User"
 Animal Load (0.2ms)  SELECT "animals".* FROM "animals"  WHERE "animals"."id" IN (1, 3)
  (0.1ms)  begin transaction
 SQL (0.2ms)  INSERT INTO "users" ("created_at", "name", "updated_at") VALUES (?, ?, ?)  [["created_at", "2015-03-26 15:29:00.478767"], ["name", "Neil"], ["updated_at", "2015-03-26 15:29:00.478767"]]
 SQL (0.1ms)  INSERT INTO "animal_users" ("animal_id", "created_at", "updated_at") VALUES (?, ?, ?)  [["animal_id", 1], ["created_at", "2015-03-26 15:29:00.479833"], ["updated_at", "2015-03-26 15:29:00.479833"]]
 SQL (0.0ms)  INSERT INTO "animal_users" ("animal_id", "created_at", "updated_at") VALUES (?, ?, ?)  [["animal_id", 3], ["created_at", "2015-03-26 15:29:00.480644"], ["updated_at", "2015-03-26 15:29:00.480644"]]
 SQL (0.1ms)  UPDATE "animal_users" SET "updated_at" = ?, "user_id" = ? WHERE "animal_users"."id" = 6  [["updated_at", "2015-03-26 15:29:00.481362"], ["user_id", 8]]
 SQL (0.1ms)  UPDATE "animal_users" SET "updated_at" = ?, "user_id" = ? WHERE "animal_users"."id" = 7  [["updated_at", "2015-03-26 15:29:00.482062"], ["user_id", 8]]
  (2.4ms)  commit transaction

【问题讨论】:

User模型中尝试使用accepts_nested_attributes_for :animal_users,看看这个帖子***.com/questions/21983131/… @Sontya 感谢您的回复。我想我越来越近了,虽然还没有到。 改变你的看法&lt;% Animal.all.each do |animal| %&gt; &lt;%= f.fields_for :animal_users do |ff| %&gt; &lt;%= ff.check_box :animal_id, , animal.id %&gt; &lt;%= animal.name %&gt; &lt;% end %&gt; @Sontya 您发布的内容很有意义。感觉就像我正在接近但仍然做错了什么。 告诉我你现在卡在哪里了 【参考方案1】:
<% Animal.all.each do |animal| %>
   <label>
      <%= check_box_tag "user[animal_ids][]", animal.id, f.object.animals.include?(animal) %>
      <%= animal.name %>
   </label>
<% end %>

你必须在你的控制器参数上接受一个带有 id 数组的散列,比如

  animal_ids: [] 

也许阅读本文会有所帮助: http://millarian.com/programming/ruby-on-rails/quick-tip-has_many-through-checkboxes/

【讨论】:

【参考方案2】:

collection_check_boxes 是更好的选择:

<%= f.collection_check_boxes(:animal_ids, Animal.all, :id, :name) do |animal| %>
  <%= animal.label  animal.check_box  %>
<% end %>

【讨论】:

这非常简单和容易。 +1,谢谢!【参考方案3】:

另一个使用collection_check_boxex 的例子对我来说更容易理解:

<%= f.collection_check_boxes(:animal_ids, Animal.all, :id, :name) do |animal| %>
  <div class="form-check">
    <%= animal.check_box(class: "form-check-input") %>
    <%= animal.label(class: "form-check-label") %>
  </div>
<% end %>

它适用于 Rails 6

【讨论】:

以上是关于form表单提交了多个checkbox怎么获取复选框的值存入数组?的主要内容,如果未能解决你的问题,请参考以下文章

layui提交表单怎么获取复选框的值

Form表单提交

点击超链接时跳转到一个servlet,怎样在servlet中获得checkbox的值

HTML:表单中例如checkbox中为啥其中的name都是一样的?

Form表单之复选框checkbox操作

java web 的表单提交与传值