【问题标题】:how can i make a javascript based form checkbox validate with javascript before sending my form如何在发送表单之前使用 javascript 验证基于 javascript 的表单复选框
【发布时间】:2012-04-05 05:42:18
【问题描述】:

您好,我的网站上有一个联系表格,在这个表格中我有一个 javascript 复选框按钮。

这是我的表单的结束代码:这个 div 标签是我的复选框:

<p><label for="agree">(*) I agree whit the transport terms and conditions:</label><div id="cb"></div></p>
<p>hi
<input name="Submit / Send" type="submit" class="submit" id="Submit / Send" tabindex="370" value="Submit / Send" />
<p id="error_zone" style="visibility:hidden;">Errors: There are some errors in the form. Please correct them.</p>
</p>

这是 javascript 文本按钮:

<script type="text/javascript">
    var cbh = document.getElementById('cb');
    var val = '1';
    var cap = '';

    var cb = document.createElement('input');
    cb.type = 'checkbox';
    cbh.appendChild(cb);
    cb.name = val;
    cb.value = cap;
    cbh.appendChild(document.createTextNode(cap));
</script>

我还对其他表单元素使用 spry 验证。 我想用 javascript 验证复选框以创建验证码复选框! 是否可以让弹出验证按摩而不干扰快速验证?! 重要的是,如果关闭了 javascript,表单将无法再提交。

希望有人可以帮助我。非常感谢您的时间!

我正在尝试完成这个:http://uxmovement.com/forms/captchas-vs-spambots-why-the-checkbox-captcha-wins/

spry验证的sn-p:

<script type="text/javascript">
var errorsOnSubmit = function(form){
 var ret = Spry.Widget.Form.validate(form);
 var errorZone= document.getElementById('error_zone');
 if (!ret){
      errorZone.style.visibility = 'visible';
      errorZone.style.backgroundColor = 'red';
 }else{
      errorZone.style.visibility = 'hidden';
 }
 return ret;
}
</script>
<script type="text/javascript">
var spryselect1 = new Spry.Widget.ValidationSelect("spryselect1", {isRequired:false,  invalidValue:"1", validateOn:["blur", "change"]});
var spryselect2 = new Spry.Widget.ValidationSelect("spryselect2", {isRequired:false, invalidValue:"1", validateOn:["blur", "change"]});
var spryselect3 = new Spry.Widget.ValidationSelect("spryselect3", {isRequired:false, invalidValue:"1", validateOn:["blur", "change"]});

【问题讨论】:

    标签: javascript forms validation checkbox


    【解决方案1】:

    你可以试试这个代码

    function agree() {
    if (document.getElementById("cb").checked){
    alert("checked");
    document.getElementById("Send").setAttribute(disabled,"false");
    document.getElementById(seny).
    }else{
    alert("unchecked");
    document.getElementById("Send").disabled="true";
    }
    }
    
    <p>
                <input type="checkbox" id="cb" onclick="javascript:agree();">
                <label for="agree">
                    (*) I agree whit the transport terms and conditions:
                </label>
            </p>
            <p id="seny">
                <input disabled="disabled" name="Send" type="submit" class="submit"
                    id="Send" tabindex="370" value="Submit / Send" />
            </p>
    

    【讨论】:

    【解决方案2】:

    在创建元素后为复选框提供一个 ID

    cb.type = 'checkbox';
    cb.id = 'mycheckbox';
    cbh.appendChild(cb);
    

    现在,您可以使用document.getElementById('mycheckbox') 选择元素并对其进行验证。

    这是一个验证复选框的sn-p

    var myform = document.forms("yourformname");
    myform.onsubmit = function() {
    
        //validate the checkbox
        var checkb = document.getElementById('mycheckbox');
        if(checkb.checked != true) { 
           alert('not checked');
        }
    
        //rest of the validation
    };
    

    更新 1:

    尚未测试,但应该可以工作

    var errorsOnSubmit = function(form){
    
      //validate the checkbox
      var checkb = document.getElementById('mycheckbox');
      if(checkb.checked != true) { 
         alert('not checked');
      }
    
     var ret = Spry.Widget.Form.validate(form);
     var errorZone= document.getElementById('error_zone');
     if (!ret){
          errorZone.style.visibility = 'visible';
          errorZone.style.backgroundColor = 'red';
     }else{
          errorZone.style.visibility = 'hidden';
     }
     return ret;
    }
    

    【讨论】:

    • 谢谢!但我怎样才能做一个验证功能?抱歉,我真的很喜欢 javascript,对吗?: function checkform() { if (!document.mycheckbox.checked) { // 框未选中 return false; }
    • 这是有效的,但是当我在本地主机中打开页面时会弹出,如果可以在提交表单时使用提交按钮 tjeks 脚本并告诉表单他只能在启用 javascript 时提交我我的复选框验证码工作了吗?
    • 我尝试将其写入代码:frm.onsubmit = cb_it;但它不会起作用你知道我做错了什么吗非常感谢你的帮助你太棒了!
    • @phj,可能是我的更新将有助于理解整个事情
    • 很好,这很完美,我现在理解了一点,但是我现在对其余表单元素的 spry 验证遇到了问题,提交按钮只验证复选框而不是 spry 脚本再有,我试图将 spry 脚本放在脚本位中(//其余验证)的位置,这将无法解决。你有什么想法我可以解决这个问题吗?多谢! *(我把我的 spry 脚本的 sn-p 放在上面的问题框中。
    猜你喜欢
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多