使用 JQuery 从表单添加/删除选项卡式数据
我目前正在开发一个客户门户网站,在这个论坛上的人们的帮助下,经过数小时的血汗和泪水,我才走到了下图所示的这一点。
我现在需要完成此表单的最后一步,但我不太确定如何去做。底部有一个选项卡式界面,上面有一个复选框。我想要的是一个系统,用户可以在其中选中和取消选中复选框,并且选项卡会出现和消失,以便他们可以选择一周中的哪几天打开。此代码还需要在表单范围内添加/删除选项卡中的详细信息,这是我正在努力解决的部分。表单的其余部分是使用 JQuery 构建的,因此我希望保持代码的一致性。
我不希望人们在底部提交表单,并且它意外地提交了他们未使用复选框选择的日期信息。
希望有人可以帮助
丹
这是我用来选项卡的代码,我尝试了 JQuery UI,但不喜欢它
$(document).ready(function(){
$( '.days:not(:first)' ).hide();
$('#info-nav li').click(function(e) {
$('.days').hide();
$('#info-nav .current').removeClass("current");
$(this).addClass('current');
var clicked = $(this).find('a:first').attr('href');
$('#info ' + clicked).fadeIn('fast');
e.preventDefault();
}).eq(0).addClass('current');
});
我使用了一段类似于下面的代码来隐藏和显示选项卡时复选框检查过,但它很粗糙并且不起作用,我将它附加到一个隐藏的且在表单范围之外的 div,然后用表单内的 div 来切换它:
$('#info-nav li').hide();
$('#holdingDiv').hide();
if($(':checkbox[name="Monday"]').is(':checked'))
{
$('#info-nav li a[href="#Monday"]').parents("li").show();
$('#Monday').appendTo('#info');
}
if($(':checkbox[name="Tuesday"]').is(':checked'))
{
$('#info-nav li a[href="#Tuesday"]').parents("li").show();
$('#Tuesday').appendTo('#info');
}
if($(':checkbox[name="Wednesday"]').is(':checked'))
{
$('#info-nav li a[href="#Wednesday"]').parents("li").show();
$('#Wednesday').appendTo('#info');
}
if($(':checkbox[name="Thursday"]').is(':checked'))
{
$('#info-nav li a[href="#Thursday"]').parents("li").show();
$('#Thursday').appendTo('#info');
}
if($(':checkbox[name="Friday"]').is(':checked'))
{
$('#info-nav li a[href="#Friday"]').parents("li").show();
$('#Friday').appendTo('#info');
}
if($(':checkbox[name="Saturday"]').is(':checked'))
{
$('#info-nav li a[href="#Saturday"]').parents("li").show();
}
if($(':checkbox[name="Sunday"]').is(':checked'))
{
$('#info-nav li a[href="#Sunday"]').parents("li").show();
$('#Sunday').appendTo('#info');} $(':checkbox').click(function()
{
if($(':checkbox[name="'+ $(this).attr('name') +'"]').is(':checked'))
{
$('#info-nav li a[href="' + $(this).val() + '"]').parents("li").show();
$($(this).val()).appendTo('#info');
$('#info-nav li a[href="' + $(this).val() + '"]').parents("li").hide();
$($(this).val()).appendTo('#holdingDiv');
}
})
I'm working on a client portal at the moment and with the help of the people on this forum and many hours of blood sweat and tears I have got to this point pictured below.
I now need to complete the final step of this form but I'm not quite sure how to go about it. At the bottom there's a tabbed interface and a above it there is are check boxes. What I want is a system where the user can check and uncheck the boxes and the tabs appear and disappear so they can choose that days of the week they're open. This code also needs to add/remove the details in the tab from the scope of the form and this is the part I'm struggling to work out. The rest of the form is built using JQuery so I'm keen to keep the code consistent.
What I don't want a person to submit the form at the bottom and it accidentally submits the days information they haven't selected with the checkboxes.
Hope someone can help
Dan
This is the code I'm using to tab, I tried the JQuery UI one but didn't like it
$(document).ready(function(){
$( '.days:not(:first)' ).hide();
$('#info-nav li').click(function(e) {
$('.days').hide();
$('#info-nav .current').removeClass("current");
$(this).addClass('current');
var clicked = $(this).find('a:first').attr('href');
$('#info ' + clicked).fadeIn('fast');
e.preventDefault();
}).eq(0).addClass('current');
});
I was using a piece of code similar to the one below to hide and show the tabs when the checkbox is checked but it was crude and didn't work, I was appendinging it to a div that was hidden and outside the scope of the form then toggling this with a div inside the form:
$('#info-nav li').hide();
$('#holdingDiv').hide();
if($(':checkbox[name="Monday"]').is(':checked'))
{
$('#info-nav li a[href="#Monday"]').parents("li").show();
$('#Monday').appendTo('#info');
}
if($(':checkbox[name="Tuesday"]').is(':checked'))
{
$('#info-nav li a[href="#Tuesday"]').parents("li").show();
$('#Tuesday').appendTo('#info');
}
if($(':checkbox[name="Wednesday"]').is(':checked'))
{
$('#info-nav li a[href="#Wednesday"]').parents("li").show();
$('#Wednesday').appendTo('#info');
}
if($(':checkbox[name="Thursday"]').is(':checked'))
{
$('#info-nav li a[href="#Thursday"]').parents("li").show();
$('#Thursday').appendTo('#info');
}
if($(':checkbox[name="Friday"]').is(':checked'))
{
$('#info-nav li a[href="#Friday"]').parents("li").show();
$('#Friday').appendTo('#info');
}
if($(':checkbox[name="Saturday"]').is(':checked'))
{
$('#info-nav li a[href="#Saturday"]').parents("li").show();
}
if($(':checkbox[name="Sunday"]').is(':checked'))
{
$('#info-nav li a[href="#Sunday"]').parents("li").show();
$('#Sunday').appendTo('#info');} $(':checkbox').click(function()
{
if($(':checkbox[name="'+ $(this).attr('name') +'"]').is(':checked'))
{
$('#info-nav li a[href="' + $(this).val() + '"]').parents("li").show();
$($(this).val()).appendTo('#info');
$('#info-nav li a[href="' + $(this).val() + '"]').parents("li").hide();
$($(this).val()).appendTo('#holdingDiv');
}
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议禁用您不想提交的表单字段,并在选择适当的复选框时启用它们:
提交表单时,禁用的表单元素不会传递到服务器。如果用户重新启用该选项卡,这还有一个优点,即可以将数据保留在表单中。
I would recommend disabling the form fields that you don't want to submit, and enabling them when the appropriate checkbox is selected:
Disabled form elements are not passed to the server when the form is submitted. This also has the advantage of keeping the data in the form if the user re-enables the tab.
我认为验证表单传输的数据是您所寻求的,以防止发送错误数据。使用 jQuery 更改选项卡空间的内容,以根据需要添加/删除表单信息。
I think validating the data being transmitted by the form is what you are looking for to prevent bad data from being sent. Use jQuery to change the content of the tab space to add/remove form information as needed.