มือใหม่ javascript php รบกวนสอบถาม php javascript autosum ครับ
ตอน load html มันมี event เดียว คือ onload แต่ไม่ได้ถูกเรียกใช้
แต่เมื่อคีย์ ข้อมูลใน textbox มีการเรียกใช้ event onchange
<body onload="function_ที่ต้องการ_อัดเดทค่า()">
Date :
2014-10-24 07:04:59
By :
Chaidhanan
เสริมนะครับ หากวิธี body onload ของพี่ Chaidhanan ไม่ได้ผล
ให้น้องเอาส่วนที่นำ income กับ outcome มาลบกันให้เหลือ total ไปไว้ล่างสุดของ page นะครับ
เพราะการทำงานของ web จะทำจาก บน->ล่าง หากน้องเอา javascript ส่วน คิด total ไว้ก่อน texbox ที่เก็บค่า
จะทำให้ javascript หา textbox นั้นไม่เจอ จึงคิด total ให้ไม่ได้นะครับ
Date :
2014-10-24 11:30:26
By :
AK
จากที่ทดลองทำ กำหนด onfocus="fncSum() ให้ส่วนของ income กับ outcome สามารถลบค่าส่วนต่างของ income กับ outcome ได้ แต่ต้อง คลิก ที่ text box income หรือ outcome 1 ครั้งก่อน ตรงนี้สามารถทำให้หาผลต่างออกมาได้เลยโดยไม่ต้องคลิกมั้ยครับ
Code
<!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=utf-8" />
<title>บันทึกรายรับ-รายจ่าย</title>
</head>
<body onload="function fncSum();">
<script type="text/javascript">
function updatesum() {
document.form.income.value = ((document.form.salary.value -0) + (document.form.ot.value -0) +
(document.form.p4p.value -0) + (document.form.benefit.value -0) +
(document.form.vacancy.value -0) + (document.form.back_pay.value -0));
}
</script>
<script type="text/javascript">
function updateoutcome() {
document.form.outcome.value = ((document.form.ssn_bill.value -0) + (document.form.death_ministry_bill.value -0) +
(document.form.electic_bill.value -0) + (document.form.water_bill.value -0) +
(document.form.shop_bill.value -0) + (document.form.ktb_bill.value -0)+
(document.form.death_hosp_bill.value -0) + (document.form.ghbank_bill.value -0) +
(document.form.cooperative_bill.value -0) + (document.form.gsbank_bill.value -0)+
(document.form.aia_bill.value -0) + (document.form.food_bill.value -0) +
(document.form.debit_bill.value -0));
}
</script>
<script language="JavaScript">
function fncSum()
{
if(isNaN(document.form.income.value) || document.form.income.value == "")
{
alert('(Number A)Please input Number only.');
document.form.income.focus();
return;
}
if(isNaN(document.form.outcome.value) || document.form.outcome.value == "")
{
alert('(Number B)Please input Number only.');
document.form.outcome.focus();
return;
}
document.form.total.value = parseFloat(document.form.income.value) - parseFloat(document.form.outcome.value);
}
</script>
<?php
include "config.php";
$objConnect = mysql_connect("$host","$user","$password") or die("Error Connect to Database");
$objDB = mysql_select_db("$dbname");
// Search By Name or Email
$strSQL = "SELECT * FROM employee";
$strSQL .= " left join dep on employee.dep_id = dep.dep_id";
$strSQL .= " WHERE em_id LIKE '".$_GET["id"]."' ";
mysql_query("SET NAMES UTF8");
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<table width="100%" border="0">
<tr>
<td width="25%"><div align="left"><h2><strong>บันทึกรายรับ-รายจ่าย</strong></h2></div></td>
<td width="25%"><div align="left"><h3><?php
while($objResult = mysql_fetch_array($objQuery))
{
?> <p>ชื่อ <?php $_POST["em_id"] = $objResult["em_id"];?> <?php echo $objResult["fname"];?> นามสกุล <?php echo $objResult["lname"];?> </p>
<p>หน่วยงาน <?php echo $objResult["dep_name"];?> </p></h3></div></td>
<?php
}
?>
</table>
<form id="form" name="form" method="post" action="SQLAddMoney.php">
<hr />
<table width="100%" border="0" cellpadding="3" cellspacing="3">
<tr>
<td width="18%"><strong>a1
<input name="em_id" type="hidden" id="em_id" value="<? echo $_POST["em_id"]; ?>" />
</strong></td>
<td width="17%"><label>
<input name="salary" type="text" id="salary" onChange="updatesum()" />
</label></td>
<td width="4%"> </td>
<td width="11%"><strong>b1</strong></td>
<td width="24%"><label>
<input type="text" name="ssn_bill" id="ssn_bill" onChange="updateoutcome()" />
</label></td>
<td width="8%"><strong>รายรับ</strong></td>
<td width="18%"><strong>
<input name="income" type="text" id="income" onfocus="fncSum()" readonly="readonly"/>
</strong></td>
</tr>
<tr>
<td><strong>a2</strong></td>
<td><label>
<input type="text" name="ot" id="ot" onChange="updatesum()" />
</label></td>
<td> </td>
<td><strong>b2</strong></td>
<td><label>
<input type="text" name="death_ministry_bill" id="death_ministry_bill" onChange="updateoutcome()" />
</label></td>
<td><strong>รายจ่าย</strong></td>
<td><strong>
<input name="outcome" type="text" id="outcome" onfocus="fncSum()" readonly="readonly"/>
</strong></td>
</tr>
<tr>
<td><strong>a3</strong></td>
<td><label>
<input type="text" name="benefit" id="benefit" onChange="updatesum()" />
</label></td>
<td> </td>
<td><strong>b3</strong></td>
<td><label>
<input type="text" name="electic_bill" id="electic_bill" onChange="updateoutcome()" />
</label></td>
<td><strong>รับสุทธิ</strong></td>
<td><strong>
<input type="text" name="total" id='total' />
</strong></td>
</tr>
<tr>
<td><strong>a4</strong></td>
<td><label>
<input type="text" name="p4p" id="p4p" onChange="updatesum()" />
</label></td>
<td> </td>
<td><strong>b4</strong></td>
<td><label>
<input type="text" name="water_bill" id="water_bill" onChange="updateoutcome()" />
</label></td>
<td colspan="2"> </td>
</tr>
<tr>
<td><strong>a5</strong></td>
<td><label>
<input type="text" name="back_pay" id="back_pay" onChange="updatesum()" />
</label></td>
<td> </td>
<td><strong>b5</strong></td>
<td><label>
<input type="text" name="shop_bill" id="shop_bill" onChange="updateoutcome()" />
</label></td>
<td colspan="2" align="center"><input type="submit" name="button" id="button" value=":::::: ยืนยัน ::::::" />
<input type="reset" name="button2" id="button2" value="ยกเลิก" /></td>
</tr>
<tr>
<td><strong>a6</strong></td>
<td><label>
<input type="text" name="vacancy" id="vacancy" onChange="updatesum()" />
</label></td>
<td> </td>
<td><strong>b6</strong></td>
<td colspan="3"><label>
<input type="text" name="ktb_bill" id="ktb_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><strong>b7</strong></td>
<td colspan="3"><label>
<input type="text" name="death_hosp_bill" id="death_hosp_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><strong>b8</strong></td>
<td colspan="3"><label>
<input type="text" name="ghbank_bill" id="ghbank_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><strong>b9</strong></td>
<td colspan="3"><label>
<input type="text" name="cooperative_bill" id="cooperative_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><strong>b10</strong></td>
<td colspan="3"><label>
<input type="text" name="gsbank_bill" id="gsbank_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><strong>b11</strong></td>
<td colspan="3"><label>
<input type="text" name="aia_bill" id="aia_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><strong>b12</strong></td>
<td colspan="3"><label>
<input type="text" name="food_bill" id="food_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td><strong>b13</strong></td>
<td colspan="3"><label>
<input type="text" name="debit_bill" id="debit_bill" onChange="updateoutcome()" />
</label></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td colspan="3"> </td>
</tr>
</table>
</form>
<hr />
</body>
</html>
Date :
2014-10-31 16:33:03
By :
a_fox
บันทัดที่ 8 <body onload="function fncSum();">
แก้เป็น <body onload="fncSum();">
เท่านี้ก็ทำงาน ตอนเริ่มโปรแกรม แล้วครับ
ปล. ต้องของโทษ ที่เขียน ตัวอย่างทำให้ เข้าใจผิดในการเรียกใช้ ฟังก์ชั่นครับ
คืออาจไม่ได้เห็น ว่ามี underline เชื่อมคำเป็น คำเดียวกันครับ
ประวัติการแก้ไข 2014-10-31 16:58:25
Date :
2014-10-31 16:55:15
By :
Chaidhanan
Code (JavaScript)
<script type="text/javascript">
function updatesum() {
document.form.income.value = ((document.form.salary.value -0) + (document.form.ot.value -0) +
(document.form.p4p.value -0) + (document.form.benefit.value -0) +
(document.form.vacancy.value -0) + (document.form.back_pay.value -0));
}
</script>
<script type="text/javascript">
function updateoutcome() {
document.form.outcome.value = ((document.form.ssn_bill.value -0) + (document.form.death_ministry_bill.value -0) +
(document.form.electic_bill.value -0) + (document.form.water_bill.value -0) +
(document.form.shop_bill.value -0) + (document.form.ktb_bill.value -0)+
(document.form.death_hosp_bill.value -0) + (document.form.ghbank_bill.value -0) +
(document.form.cooperative_bill.value -0) + (document.form.gsbank_bill.value -0)+
(document.form.aia_bill.value -0) + (document.form.food_bill.value -0) +
(document.form.debit_bill.value -0));
}
</script>
<script language="JavaScript">
function fncSum()
{
if(isNaN(document.form.income.value) || document.form.income.value == "")
{
alert('(Number A)Please input Number only.');
document.form.income.focus();
return;
}
if(isNaN(document.form.outcome.value) || document.form.outcome.value == "")
{
alert('(Number B)Please input Number only.');
document.form.outcome.focus();
return;
}
document.form.total.value = parseFloat(document.form.income.value) - parseFloat(document.form.outcome.value);
}
</script>
</head>
<body onload="fncSum();">
ลบกวนนะครับ ย้าย </head><body มาไว้แบบข้างบนนะครับ อย่างคห 2 คุณ AK บอกล่ะครับ
Date :
2014-10-31 18:21:45
By :
Chaidhanan
รบกวนครับ ขอ view source มาทดลองหน่อยครับ
ผมไมมี database ต้องสร้างอีกยาว
Date :
2014-10-31 18:32:23
By :
Chaidhanan
มันไม่มีข้อมูล ในช่องแต่ละช่องเลยนี่ครับ
คำสั่ง onload มันทำงาน แต่ว่ามันคำนวณไม่ได้ เพราะไม่มีอะไรให้มันคำนวณนะครับ
สี่่งที่ต้องการ คืออะไรเหรอครับ
แบบพอคีย์เสร็จแล้วให้มันคำนวณเลยหรือเปล่าครับ โดยไม่ต้องกด enter หรือ ไป focus ที่อื่น
โดยปกติ มันจะมี onchange :ซึ่งต้องกด enter หรือไป โฟกัสที่อื่น นะครับ
onkeyup ทุกครั้งที่ปล่อยปุ่ม
ก็ต้องเลือกเอาล่ะครับว่าต้องการแบบไหน
Date :
2014-10-31 18:44:04
By :
Chaidhanan
Code (JavaScript)
function updatesum() {
document.form.income.value = ((document.form.salary.value -0) + (document.form.ot.value -0) +
(document.form.p4p.value -0) + (document.form.benefit.value -0) +
(document.form.vacancy.value -0) + (document.form.back_pay.value -0));
fncSum()
}
function updateoutcome() {
document.form.outcome.value = ((document.form.ssn_bill.value -0) + (document.form.death_ministry_bill.value -0) +
(document.form.electic_bill.value -0) + (document.form.water_bill.value -0) +
(document.form.shop_bill.value -0) + (document.form.ktb_bill.value -0)+
(document.form.death_hosp_bill.value -0) + (document.form.ghbank_bill.value -0) +
(document.form.cooperative_bill.value -0) + (document.form.gsbank_bill.value -0)+
(document.form.aia_bill.value -0) + (document.form.food_bill.value -0) +
(document.form.debit_bill.value -0));
fncSum()
}
เอา fncSum() เข้าไปไว้ใน updateoutcome() และ updatesum() ตามข้างบนครับ
Date :
2014-10-31 18:53:31
By :
Chaidhanan
รบกวนต่ออีกหน่อยครับ ถ้าสมมุติว่าเรา query ข้อมูลจากฐานข้อมูลมาใส่ใน text box แล้ว แล้วต้องกำหนดค่าแต่ละ text box ยังไงให้ส่งค่าไปคำนวนที่ income , outcome , total ได้เลยครับ ขอบคุณครับ
ประวัติการแก้ไข 2014-11-05 14:11:59
Date :
2014-11-05 14:10:18
By :
a_fox
คำนวณจาก php แล้ว เอาเข้าไปใส่ตรงๆ เลยครับ
Date :
2014-11-05 14:27:43
By :
Chaidhanan
[แก้ไขคำผิด]เราสามารถกำหนดได้มั้ยครับ ว่าหากกด tab เพื่อเลื่อนไปยัง text box ถัดไป แต่ต้องการให้ เรียง แบบ a1 a2 a3....b1 b2 b3 ..... เพราะจะช่วยให้คนทำงาน สะดวกขึ้นได้เยอะเลย ขอบคุณครับ
ประวัติการแก้ไข 2014-11-10 12:51:14
Date :
2014-11-10 12:37:26
By :
a_fox
Code (XML)
<form>
Field 1 (first tab selection):
<input type="text" name="field1" tabindex=1 /><br />
Field 2 (third tab selection):
<input type="text" name="field2" tabindex=3 /><br />
Field 3 (second tab selection):
<input type="text" name="field3" tabindex=2 /><br />
</form>
Date :
2014-11-10 12:51:44
By :
Chaidhanan
Load balance : Server 01