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 【问题描述】:原始问题
两个资源:users
和animals.
创建用户时,客户端选中复选框来说明他们有多少动物。
当提交用户表单时,它不仅应该创建一个新的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 感谢您的回复。我想我越来越近了,虽然还没有到。
改变你的看法<% Animal.all.each do |animal| %> <%= f.fields_for :animal_users do |ff| %> <%= ff.check_box :animal_id, , animal.id %> <%= animal.name %> <% end %>
@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怎么获取复选框的值存入数组?的主要内容,如果未能解决你的问题,请参考以下文章
点击超链接时跳转到一个servlet,怎样在servlet中获得checkbox的值