即使在使用 jquery 单击浏览器后退按钮时,如何使复选框成为强制性的?
How to make checkbox mandatory even on bowser back button click using jquery?
我正面临如下情况。
- 带有字段和复选框(同意条款)的网页 1
- WebPage2 检查复选框是否被选中并启动电子邮件
填完 page1 表单字段后,选中复选框(我同意条款)并提交给 Page2,Page2 检测复选框选中状态并继续发送电子邮件。 - 工作正常
现在的问题是,
如果在浏览器中单击 "Go back button" 而在 page2 中,则会加载页面 1(复选框未选中),然后如果在未选中复选框的情况下按下浏览器 "Go forward button",则会提交 page1 并开始发送电子邮件。
我希望在转到第 2 页之前强制选中该复选框,即使用户使用浏览器的后退和前进按钮也是如此。主要是为了防止网络表单垃圾邮件。
如何实现?请帮忙。
你可以做的是将 Iagree
值传递到 get 中,这样当他们前进到页面时,他们会得到类似“/account/register?terms=true”的内容,然后输入名称 terms
将被设置为 true。
然而,为您要归档的内容设置两个页面可能不是一个好主意,因为它允许人们完成整个 back/forward 事情。
我所做的是创建了一个简单的 jsFiddle,其中包含一个应该对您有所帮助的解决方案
jsFiddle : https://jsfiddle.net/vq0y78ea/
Html
<div class="section1">
<input type="checkbox" class="TsCs" />
<p>Terms and Conditions</p>
<button class="agree-to-terms">I agree</button>
</div>
<div style="display:none" class="section2">
<label>Email address</label>
<input type="textbox" />
<button class="register-account">Register</button>
</div>
Javascript / jQuery
$(function () {
$('.agree-to-terms').on('click', function () {
if ($('.TsCs').is(':checked')) {
$('.section1').slideUp();
$('.section2').slideDown();
}
});
$('.register-account').on('click', function () {
if ($('.TsCs').is(':checked')) {
$('form').submuit();
}
else
{
alert('There was a problem with the Ts and Cs, please check "I agree"');
$('.section1').slideDown();
$('.section2').slideUp();
}
});
});
基本上网页上只有一个表单,当用户选中 I agree to terms and condtions
时,它将隐藏 I agree
部分并显示 register
部分。这将阻止用户后退和前进,如果用户没有选中复选框并尝试提交我已经使用 jQuery 来确保他们已经选中它或者他们无法提交。
还有你可以用表单 post 做什么,用在 post 方法中使用表单值的代码,post 复选框的值确保它是checked/true,如果不只是 return 页面。
我正面临如下情况。
- 带有字段和复选框(同意条款)的网页 1
- WebPage2 检查复选框是否被选中并启动电子邮件
填完 page1 表单字段后,选中复选框(我同意条款)并提交给 Page2,Page2 检测复选框选中状态并继续发送电子邮件。 - 工作正常
现在的问题是, 如果在浏览器中单击 "Go back button" 而在 page2 中,则会加载页面 1(复选框未选中),然后如果在未选中复选框的情况下按下浏览器 "Go forward button",则会提交 page1 并开始发送电子邮件。
我希望在转到第 2 页之前强制选中该复选框,即使用户使用浏览器的后退和前进按钮也是如此。主要是为了防止网络表单垃圾邮件。
如何实现?请帮忙。
你可以做的是将 Iagree
值传递到 get 中,这样当他们前进到页面时,他们会得到类似“/account/register?terms=true”的内容,然后输入名称 terms
将被设置为 true。
然而,为您要归档的内容设置两个页面可能不是一个好主意,因为它允许人们完成整个 back/forward 事情。
我所做的是创建了一个简单的 jsFiddle,其中包含一个应该对您有所帮助的解决方案
jsFiddle : https://jsfiddle.net/vq0y78ea/
Html
<div class="section1">
<input type="checkbox" class="TsCs" />
<p>Terms and Conditions</p>
<button class="agree-to-terms">I agree</button>
</div>
<div style="display:none" class="section2">
<label>Email address</label>
<input type="textbox" />
<button class="register-account">Register</button>
</div>
Javascript / jQuery
$(function () {
$('.agree-to-terms').on('click', function () {
if ($('.TsCs').is(':checked')) {
$('.section1').slideUp();
$('.section2').slideDown();
}
});
$('.register-account').on('click', function () {
if ($('.TsCs').is(':checked')) {
$('form').submuit();
}
else
{
alert('There was a problem with the Ts and Cs, please check "I agree"');
$('.section1').slideDown();
$('.section2').slideUp();
}
});
});
基本上网页上只有一个表单,当用户选中 I agree to terms and condtions
时,它将隐藏 I agree
部分并显示 register
部分。这将阻止用户后退和前进,如果用户没有选中复选框并尝试提交我已经使用 jQuery 来确保他们已经选中它或者他们无法提交。
还有你可以用表单 post 做什么,用在 post 方法中使用表单值的代码,post 复选框的值确保它是checked/true,如果不只是 return 页面。