javascript - 表单验证 - 使用 Javascript 进行复选框

标签 javascript html validation

当用户单击“确认”复选框时,我尝试验证一些信息。问题是这是从 Access 数据库中提取的数据,因此表单字段 ID 具有变量。这是我用来触发事件的复选框:

<INPUT TYPE="checkbox" id="checkconfirm<%=j%>" NAME="confirm<%=j%>" align="center" value="Yes" onclick="ConfirmBoxChecked(this.form.confirm<%=j%>.name,this.form.confirmYear<%=j%>.value,this.form.confirmStatus<%=j%>.value)">

其中j是从access数据库中提取的每条记录(因此第一条记录复选框是checkconfirm1,第二条记录checkconfirm2等)。

confirmYear和confirmStatus是我正在检查的两条数据。

我的 javascript onclick 函数是这样的:

function ConfirmBoxChecked(confirmbox, yearz, statuz) {
    var datecheck = new Date;
    //alert("Working! " + yearz + " working " + confirmbox + " working " + statuz + " working " + datecheck.getFullYear() + " working ");
    var boxname = "\'" + confirmbox + "\'"
    alert(boxname);
    if (statuz=="P" && (yearz < datecheck.getFullYear())) {
        alert("This fleet was delivered in " + yearz + " but is still listed as 'Potential Order'.  Please edit the year or status of these vehicles.");
        document.getElementByID(boxname).checked=false;
    }
    if (statuz=="O" && (yearz < datecheck.getFullYear())) {
        alert("This fleet was delivered in " + yearz + " but is still listed as 'On Order'. Please edit the year or status of these vehicles.");
        return false; 
    }
    if (statuz=="A" && yearz > datecheck.getFullYear() - 1) {
       alert("You have entered vehicles with status=''Active'', but with a model year of " + yearz + ". Your responses should reflect the status of these vehicles on 1/1/" + daty.getFullYear() + ".\nVehicles being delivered in " + daty.getFullYear() + " or in later years should be ''On Order'' or ''Potential'' based on the contract status. Please correct the year or status of these vehicles.");
        return false; 
    }
}

在我看来,验证工作正常 - IF 正确触发后的警报。但我希望在警报触发后取消选中该复选框。我不知道该怎么做。


好的,这就是解决问题的方法。我没有通过名称,而是通过元素。所以输入代码如下所示:

<INPUT TYPE="checkbox" id="checkconfirm<%=j%>" NAME="confirm<%=j%>" align="center" value="Yes" onClick="ConfirmBoxChecked(this,this.form.confirmYear<%=j%>.value,this.form.confirmStatus<%=j%>.value)">

然后函数代码如下:

function ConfirmBoxChecked(confirmbox, yearz, statuz) {
var datecheck = new Date;
//alert("Working! " + yearz + " working " + confirmbox + " working " + statuz + " working " + datecheck.getFullYear() + " working ");
//var boxname = "\"" + confirmbox + "\""
//alert(boxname);
            if (statuz=="P" && (yearz < datecheck.getFullYear())) {
                alert("This fleet was delivered in " + yearz + " but is still listed as 'Potential Order'.  You must edit the year or status of these vehicles before you can confirm.");
                confirmbox.checked = false; }
            if (statuz=="O" && (yearz < datecheck.getFullYear())) {
                alert("This fleet was delivered in " + yearz + " but is still listed as 'On Order'. You must edit the year or status of these vehicles before you can confirm.");
                confirmbox.checked = false;  }
            if (statuz=="A" && yearz > datecheck.getFullYear() - 1) {
                alert("You have entered vehicles with status=''Active'', but with a model year of " + yearz + ". Your responses should reflect the status of these vehicles on 1/1/" + daty.getFullYear() + ".\nVehicles being delivered in " + daty.getFullYear() + " or in later years should be ''On Order'' or ''Potential'' based on the contract status. Please correct the year or status of these vehicles.");
                confirmbox.checked = false;  }

}

而且它有效!

最佳答案

您将复选框的 name 属性作为函数中的 confirmbox 参数传递。然后在您的代码中调用 getElementById(confirmbox),这不是 id。尝试传递 id 属性:

<INPUT TYPE="checkbox" id="checkconfirm<%=j%>" NAME="confirm<%=j%>" align="center" value="Yes" onclick="ConfirmBoxChecked(this.id,this.form.confirmYear<%=j%>.value,this.form.confirmStatus<%=j%>.value)">

关于javascript - 表单验证 - 使用 Javascript 进行复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34888734/

相关文章:

javascript - 生成具有相关概率的随机字符串

javascript - 或者比较不起作用?

jquery - 触发鼠标进入图像中心

html - 将 img 向上或向下移动几个像素

WPF 错误模板 - 扩展器折叠时红色框仍然可见

javascript - 动态单选组的 jquery 表单验证

javascript - 如何创建一个 jQuery 加载栏? (就像 Flash 网站上使用的那样)

javascript - 防止其他元素发生事件

javascript - Angular dist 文件 ||我如何在没有服务器的情况下在本地运行它们?

javascript - 如何在 JQuery 验证器的 invalidHandler 中显示消息