2013-08-03 26 views
0

我有这样的一段代码,而我试图ASIGN值变量days(如果复选框选中的组合之一是真实的),并通过发送提交给另一个asp。选中复选框 - ASIGN值变量和发送在提交

问题是变量没有取任何值。下面的代码:

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

,也不能你找出days'服务器端的'基于价值的价值你的复选框?如果你真的不关心“chklunes”,“checkmartes”等,那么只需将1,2,3作为复选框的值 –

+0

这不重要的变量的值,我要把1, 2,3,4,5。我只需要评估条件,为变量赋值并稍后在函数中进行评估。谢谢 – Cristian3

回答

0

var关键字声明在当前范围内的变量。你需要在整个函数的范围内声明几天。然后你需要一种方式来传递你的值:这通常是用一个输入类型=“hidden”来完成的。你的按钮是一个type =“submit”,我认为你不需要最后一行(除非你取消事件)。

+0

谢谢......我没有意识到声明并未在所有函数中声明。在这个问题上我很新手。 :( – Cristian3

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(); 
} 
如果你希望看到days`的`在$ _ POST,你需要使用一个隐藏字段来发送它的价值
+0

@ Cristian3没问题的人,很高兴帮助:) – federicot

+0

使用未声明的变量使它属于全局作用域(在HTML中,这是'window'对象)。 'days'是函数的本地函数,这是不好的做法,可能会与其他包含的Javascript中使用的变量冲突。总是用'var'声明你的局部变量。 – Pikrass

+1

@Pikrass在这种情况下'days'实际上并不是_undefined_,它是函数的参数。 OP由于某种原因想修改它。 – federicot