按Ctrl选择多个项目并通过表单post访问
Ctrl select multiple items and access via form post
我有一个显示日期列表的表单-用户单击某一天,我使用jQuery填充一个隐藏字段,然后我可以在post数组中引用该值。
我现在想让用户通过使用Ctrl+Click选择一个以上的项目,然后能够访问所有选定的选项在张贴数组,但我不知道如何去做?
我已经弄清楚如何允许选择多个项目,但我无法弄清楚如何通过post访问此,因为我当前的代码仅包含隐藏字段中最后单击的项目。
这是我目前使用的:
var multiple = false;
$(document).on('keyup keydown', function(e) {
multiple = e.ctrlKey;
});
$(document).ready(function () {
$(document).on('click', '[name="day"]', function () {
if (multiple) {
$('[name="date"]').val($(this).text());
$(this).addClass('selected');
} else {
$('[name="day"]').removeClass('selected');
$('[name="date"]').val($(this).text());
$(this).addClass('selected');
}
});
});
http://jsfiddle.net/z44Lvs48/1/您当前使用的是$('[name="date"]').val($(this).text());
,这意味着每次单击日期时,您都要替换输入中的值。
相反,您应该将附加到输入后,并用逗号分隔每个值。
所以改变:
$('[name="date"]').val($(this).text());
:
$('[name="date"]').val($('[name="date"]').val() + ',' + $(this).text());
额外的$('[name="date"]').val()
仅仅意味着增加当前值。
我在示例中删除了输入的'hidden',这样你就可以看到我的意思了(此处更新了fiddle):
var multiple = false;
$(document).on('keyup keydown', function(e) {
multiple = e.ctrlKey;
});
$(document).ready(function() {
$(document).on('click', '[name="day"]', function() {
if (multiple) {
$('[name="date"]').val($('[name="date"]').val() + ',' + $(this).text());
$(this).addClass('selected');
} else {
$('[name="day"]').removeClass('selected');
$('[name="date"]').val($(this).text());
$(this).addClass('selected');
}
});
});
.selected {
background-color: red;
color: white;
}
.base {
float: left;
height: 40px;
width: 40px;
margin-right: 10px;
padding: 10px;
border: 1px solid;
cursor: pointer;
text-align: center;
border-radius: 5px;
font-size: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="date">
<br>
<span id="days_disp"><div name="day" class="base wd selected"><span>Mon</span>
<br>05/10/2015</div>
<div name="day" class="base wd"><span>Tue</span>
<br>06/10/2015</div>
<div name="day" class="base wd"><span>Wed</span>
<br>07/10/2015</div>
<div name="day" class="base wd"><span>Thu</span>
<br>08/10/2015</div>
<div name="day" class="base wd"><span>Fri</span>
<br>09/10/2015</div>
<div name="day" class="base nwd"><span>Sat</span>
<br>10/10/2015</div>
<div name="day" class="base nwd"><span>Sun</span>
<br>11/10/2015</div>
</span>
然后您可以访问隐藏输入的值(val()
)并使用.split(',')
(在每个逗号处分开)来形成一个日期数组,您可以在该数组上做任何您想做的事情。
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 试图在表单post之后使用jQuery.post()重定向用户
- 如何将CSS和HTML元素呈现回客户端's浏览器从表单POST帐户和JavaScript
- 防止表单 POST 重定向发生,但仍保留引导验证
- 节点 Js 请求发布不将表单 POST 数据发送到 LAMP 服务器
- 通过AJAX在简单表单POST上收到500错误 - 不确定出了什么问题
- 将 Rails 表单 POST 数据传递给 JS 点击事件
- 提交 JQuery 表单 $.post() 处理成功时的显示消息
- 使用ajax/jquery模拟html表单POST
- X-editable with ASP MVC View,如何将提交的表单POST操作获取到控制器
- 无法在表单POST中调用.js
- angularjs表单post(使用ngUpload上传文件)和nodejs服务器的跨域问题
- 动态表单Post无法在mozilla中工作
- 表单POST未显示在控制器中
- Javascript防止表单post,如果没有验证
- 表单Post数据使用Ajax和jquery
- 用MVC表单Post发送HTML字符串
- 动态地向表单post添加数据
- 我如何从jQuery .submit()事件对象访问表单POST数据
- 提交带有一些附加参数的表单(post,而不是ajax)