2015-02-07 101 views
1

以下是我的表結構: -添加複選框值PHP,MySQL和alertbox使用JavaScript

Name Marks 
A 12 
B 41 
C 13 
D 24 
E 91 
F 89 
G 87 

表的名稱是 「登錄」。我的代碼如下: -

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form name='checkbox1[]' method="post" action="student_slected.php" >  
<label class="cb1" for="checkbox1"> </label> 
<input type="hidden" name="checkbox1[]" id="check" value="null"> 
<b><h3>Select students :-</h3></b> 
<?php 
    mysql_connect("localhost", "root", "root1") or die (mysql_error()); 

    mysql_select_db("my_db") or die(mysql_error()); 

    $strSQL = "SELECT Name FROM login ORDER BY Name"; 

    $rs = mysql_query($strSQL); 
    while($row = mysql_fetch_array($rs)) 
    { 
    $man = $row['Name']; 
    echo '<input type="checkbox" value="'.$man.'" name="checkbox1[]" />'; 
    echo $man; 
    echo "<br>"; 
    } 
    mysql_close(); 
    ?> 
</select> 
<input type="submit" value="SUBMIT" style= "height:40px; width:150px; font-weight: bold; font-size:10;"> 
</form> 
</body> 
</html> 

現在我當用戶檢查名稱列表中使用JavaScript需要一個警告框,如果用戶選擇了A,B,d和E之痕的總和應不超過100即超過100,則應顯示一條警告消息,指出「你不能超過標記100的總和」。請幫我提供必要的代碼。

回答

0

如果您使用純粹的JavaScript沒有任何額外的庫,那麼你應該把onchange事件在您的複選框。這將激活一個處理檢查和取消選中事件的函數。此外,您應該添加一些可幫助您的JavaScript代碼檢測計算總和時應考慮的複選框。在這裏,我已經把一個叫chkbox類:現在

<input type="checkbox" value = "50" class="chkbox" onchange="jsFunction()" /> 

,爲你的JavaScript函數:

function jsFunction(element) 
{ 
    var sum = 0,i; 
    var elements = document.getElementsByClassName('chkbox'); 

    for(i = 0;i<elements.length;i++) 
    { 
     if(elements[i].checked) 
     { 
      sum += parseInt(elements[i].value); 
     } 
    } 

    if(sum > 100) 
    { 
     alert("100 exceeded"); 
     element.checked = false; 
    } 
} 

此代碼只是需要有適當的類的所有元素,檢查該元素檢查屬性是真實的,如果它是增加其值的總和。

爲了有可用的標記數據,你應該改變你的SQL查詢:

$strSQL = "SELECT Name,Marks FROM login ORDER BY Name"; 

當PHP創建你應該複選框值設置爲當前行的標誌值複選框:

echo '<input type="checkbox" value="'.$row['Marks'].'" class="chkbox" name="checkbox1[]" onchange="jsFunction(this)" />'; 

通過這種方式,您可以將標記的值設置爲複選框的值屬性。

+0

但值存儲在一個mysql表..當選擇名稱時,這將工作,當勾選複選框時相應的標記被添加,當選擇超過100個標記的總和時顯示一個警告框。 – 2015-02-07 19:53:37

+0

想法是獲取名稱和標記列,並將標記值設置爲複選框的值。 – DBWhite 2015-02-07 20:01:40

+0

如何獲取該數據並將其作爲輸入存儲在複選框中?我只在while循環中打印名稱列。現在我該如何取得商標? – 2015-02-07 20:40:19