1

我有这段代码,我正在尝试为变量分配一个值days(如果选中的复选框组合之一为真),然后通过提交发送到另一个 asp。

问题是该变量没有任何值。这是代码:

<html>
<head>
<script type="text/javascript">
function validatedays(days) {
var dias=3
if(document.getElementById("chkmonday").checked && document.getElementById("chktuesday").checked) 
    { var days=1;}
if(document.getElementById("chkwednesday").checked && document.getElementById("chkthursday").checked)
    { var days=2;}
if(document.getElementById("chkfriday").checked) {
    var days=3 }
datos.submit()
}
</script>
</head>
<body>
<form method="post" id="data" name="data" action="blabla.asp">
<input type="text" name="txtsurname"  id="txtsurname" size="20" /><br />
<input type="text" name="txtcuota" id="txtcuota" size="20" /><br />
<br />
<input type="checkbox" value="chklunes" name="chkmonday" /><br/>
<input type="checkbox" value="chkmartes" name="chktuesday" /><br/>
<input type="checkbox" value="chkmiercoles" name="chkwednesday" /><br/>
<input type="checkbox" value="chkjueves" name="chkthursday" /><br/>
<input type="checkbox" value="chkviernes" name="chkfriday" /><br/>
<br/>
<input type="submit" value="Calcular" onclick="javascript:validatedays(days)" />  
<input type="reset" value="Clean" /> 
</form>
</body>
</html>
4

2 回答 2

0

var关键字在当前范围内声明一个变量。您需要在整个函数的范围内声明天数。然后你需要一种在表单中传递你的值的方法:这通常是通过输入 type="hidden" 来完成的。

function validatedays() {
    var days;

    if(document.getElementById("chkmonday").checked && document.getElementById("chktuesday").checked) {
        days=1;
    } else if(document.getElementById("chkwednesday").checked && document.getElementById("chkthursday").checked) {
        days=2;
    } else if(document.getElementById("chkfriday").checked) {
        days=3;
    }

    // Assign days to the value of a (hidden) input in the form

    document.getElementById('data').submit();
}

您的按钮是 type="submit",我认为您不需要最后一行(除非您取消事件)。

于 2013-08-03T20:05:55.063 回答
0

问题是,当你这样做时,你在不需要var <name of the variable>时重新声明它。所以删除var关键字。

此外,您遗漏了一些;,最重要的是,您没有定义datos(我猜应该是表单)。

var datos = document.getElementById('data');

function validatedays(days) {
    if (document.getElementById('chkmonday').checked
            && document.getElementById('chktuesday').checked) {
        days = 1;
    }

    if (document.getElementById("chkwednesday").checked
            && document.getElementById("chkthursday").checked) {
        days = 2;
    }

    if (document.getElementById("chkfriday").checked) {
        days = 3;
    }

    datos.submit();
}
于 2013-08-03T20:11:12.237 回答