2013-08-03 22 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