即使在使用jquery的bowser back按钮点击时如何强制选中复选框?

时间:2015-08-02 18:32:21

标签: javascript jquery html checkbox spam-prevention

我正面临着如下情况。

  1. 带有字段的WebPage1和一个复选框(同意条款)
  2. WebPage2检查复选框是否已选中并启动电子邮件
  3. 填写page1表单字段后,选中复选框(我同意条款)并提交到Page2,Page2检测复选框已检查状态并继续发送电子邮件。 - 工作正常

    现在的问题是, 如果在浏览器中"返回按钮"在第2页中单击,第1页被加载(复选框显示未选中),然后是浏览器"前进按钮"在没有选中复选框的情况下按下,第1页被提交,第2页开始通过电子邮件发送。

    我希望在转到Page2之前强制检查复选框,即使用户使用浏览器后退和前进按钮也是如此。主要是为了防止webform垃圾邮件。

    如何实现这一目标?请帮忙。

1 个答案:

答案 0 :(得分:0)

你可以做的是将Iagree值传递给get,这样当他们前往页面时,他们会得到类似“/ account / register?terms = true”的内容,然后输入名称为{{ 1}}将设置为true。

然而,对于您要归档的内容,有两个页面可能不是一个好主意,因为它允许人们完成整个后退/前进的事情。

我所做的是创建了一个简单的jsFiddle,其解决方案可以帮助您

jsFiddle:https://jsfiddle.net/vq0y78ea/

Html

terms

Javascript / jQuery

<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>

基本上网页上只有一个表单,当用户选中$(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部分。这将阻止用户前后移动,如果用户没有选中复选框并尝试提交我已经使用jQuery来确保他们已经检查过或者他们无法提交。

另外你可以使用表单发布,使用post方法中使用表单值的代码,发布复选框的值,确保选中/ true,如果不是只返回页面。