PDA

View Full Version : Nhờ các bạn viết hộ hàm nhân tự động



giamngucgames
02-05-2008, 14:58
Các bạn à, mình đang mắc kẹt một vấn đề là muốn nhập số vào 2 textbox thì hàm sẽ tự động nhân và hiển thị kết quả ở textbox thứ 3
Mình đã viết hoài mà không được xin các bạn giúp đỡ
VD:
text1 là txtsoluong
text2 là txtdongia
text3 là txtketqua

zoejoe
02-05-2008, 15:09
<input id="soluong" type="text" />
<input id="dongia" type="text" />
<input id="ketqua" type="text" onFocus='calc()' />
<!-- code Javascr -->
<script type="text/javascript">
<!--
function calc ()
{
var sl = document.getElementById('soluong').value;
var dg = document.getElementById('dongia').value;
var re = document.getElementById('ketqua').value;

re = sl*dg;


return true;

}
-->
</script>


Mới sửa lại, bổ sung thêm event focus cho textbox số 3 :D

vnmarser
02-05-2008, 15:27
Bạn viết bằng ngôn ngữ nào?
Viết như trên cũng được nhưng như vậy dễ gây tốn tài nguyên. Giả sử có 1000 người truy cập cùng lúc vào chỗ đó thì cứ trong khoảng thời gian t, máy chủ sẽ thực hiện 1000 lệnh. Lãng phí tài nguyên.
Bạn hãy sử dụng các event để điểu khiển việc này, ví dụ keypress chẳng hạn. Như vậy, nếu ông nào đó mở trang đó ra mà không làm gì thì không ảnh hưởng đến tài nguyên máy chủ. Lệnh chỉ thực hiện khi có event.

amida
02-05-2008, 15:53
Bạn sử dụng sự kiện bắt focus đến text box thứ 3 (txtketqua) để không tốn resource như cách của bạn zoejoe :)

giamngucgames
02-05-2008, 15:57
Bạn sử dụng sự kiện bắt focus đến text box thứ 3 (txtketqua) để không tốn resource như cách của bạn zoejoe :)

Đúng mình sử dụng sự kiện khi mouseout hay gì đó, bởi vì yêu cầu của mình là nhập số lượng và đơn giá thì ô textbox là txtketqua tự động tính và hiện thị value cho txtketqua

Mình đã viết nhưng không được mong các bạn chỉ giúp

amida
02-05-2008, 16:37
Bạn vui lòng send code lên nhé. Chúng ta kô thể mồ khi kô có dao :)

zoejoe
02-05-2008, 17:35
Bạn viết bằng ngôn ngữ nào?
Viết như trên cũng được nhưng như vậy dễ gây tốn tài nguyên. Giả sử có 1000 người truy cập cùng lúc vào chỗ đó thì cứ trong khoảng thời gian t, máy chủ sẽ thực hiện 1000 lệnh. Lãng phí tài nguyên.
Bạn hãy sử dụng các event để điểu khiển việc này, ví dụ keypress chẳng hạn. Như vậy, nếu ông nào đó mở trang đó ra mà không làm gì thì không ảnh hưởng đến tài nguyên máy chủ. Lệnh chỉ thực hiện khi có event.

Javascript chạy trên client thì có liên quan gì tới máy chủ nhỉ ?? Nó chỉ là script chạy đơn giản trên client nhà, đâu có dùng đến ajax đâu mà sợ đụng đến tài nguyên máy chủ ?? =))

bka
02-05-2008, 18:43
<input id="soluong" type="text" />
<input id="dongia" type="text" />
<input id="ketqua" type="text" onFocus='calc()' />
<!-- code Javascr -->
<script type="text/javascript">
<!--
function calc ()
{
var sl = document.getElementById('soluong').value;
var dg = document.getElementById('dongia').value;
var re = document.getElementById('ketqua').value;

re = sl*dg;


return true;

}
-->
</script>






Bạn viết bằng ngôn ngữ nào?
Viết như trên cũng được nhưng như vậy dễ gây tốn tài nguyên. Giả sử có 1000 người truy cập cùng lúc vào chỗ đó thì cứ trong khoảng thời gian t, máy chủ sẽ thực hiện 1000 lệnh. Lãng phí tài nguyên.
Bạn hãy sử dụng các event để điểu khiển việc này, ví dụ keypress chẳng hạn. Như vậy, nếu ông nào đó mở trang đó ra mà không làm gì thì không ảnh hưởng đến tài nguyên máy chủ. Lệnh chỉ thực hiện khi có event.




cái này cũng chỉ xử lý phía client thui mà đâu có liên quan gì đến server .. nhưng tốt nhất là nên gọi hàm khi dùng đến thì tốt hơn . dùng onclick . .. onmouse...v.v.v...

giamngucgames
03-05-2008, 14:51
Code của em thế này, các anh xem có được không

<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Number</title>
</head>
<script type="text/javascript">
function Get() {
document.getElementById('T3').value = parseFloat(document.getElementById('T1').value) * parseFloat(document.getElementById('T2').value)
}
</script>
<body>

<form method="POST" action="#">
<input type="text" id="T1" size="20" value="1" onkeyup="Get();"> x
<input type="text" id="T2" size="20" onkeyup="Get();"> =
<input type="text" id="T3" size="20">
</form>

</body>

</html>

[=========> Bổ sung bài viết <=========]

Em đã viết 1 hàm x]r lý như sau:
ví dụ: 10000 ----> hiển thị ở text: 10.000
Được hàm này thì hàm nhân tự động trên nó lại không tính được mà nó chỉ lấy phần số trước dấu chấm phân cách kia để nó nhân thôi
Ví dụ: 10 * 50.000 = 500
Các bác giúp em với

tiendx2002
03-05-2008, 23:26
Em đã viết 1 hàm x]r lý như sau:
ví dụ: 10000 ----> hiển thị ở text: 10.000
Được hàm này thì hàm nhân tự động trên nó lại không tính được mà nó chỉ lấy phần số trước dấu chấm phân cách kia để nó nhân thôi
Ví dụ: 10 * 50.000 = 500
Các bác giúp em với


a1 = document.getElementById('T1').value.replace('.','' );
a2 = document.getElementById('T2').value.replace('.','' );
document.getElementById('T3').value = parseFloat(a1) * parseFloat(a2)

Sau khi tích hợp xong bạn gửi bản final lên nhé.
Thân mến.

giamngucgames
03-05-2008, 23:43
[QUOTE=tiendx2002;1125080]
a1 = document.getElementById('T1').value.replace('.','' );
a2 = document.getElementById('T2').value.replace('.','' );
document.getElementById('T3').value = parseFloat(a1) * parseFloat(a2)
QUOTE]

Bạn ơi nó chạy nhưng nó vẫn không lọc bỏ được dấu "." trong dãy số

tiendx2002
03-05-2008, 23:46
Nếu bạn muốn value thay đổi trực tiếp thì không dùng biến trung gian nữa mà thao tác trực tiếp trên value của text box.
Thân mến.

giamngucgames
04-05-2008, 00:12
Mình không giỏi về Javascript lắm, bạn có thể hướng dẫn mình được không
VD:
a1=20.00
a2=35.000
kết quả a3=20.000*35.000=700.000.000
Để làm sao nó có thể bỏ dấu chấm trong dãy số đi và tính toán bình thường nhỉ. Nếu bỏ hàm formatNumber đi thì tính bình thường, còn để nguyên thì nó chỉ tính số trước dấu "." mà thôi

tiendx2002
04-05-2008, 00:15
Bạn đưa full script lên mình sẽ giúp.
Thân mến.

giamngucgames
04-05-2008, 00:40
Mình đã gửi file html và script lên rồi bạn kiểm tra giup mình với. Mình đang rất cần hàm này
Cám ơn bạn nhiều

File: http://www.mediafire.com/?tjhmmyttx2u

tiendx2002
04-05-2008, 00:58
function Get() {
a1 = document.getElementById('txtsoluong').value.replac e('.','');
a1 = a1.replace(',','');
a2 = document.getElementById('txtdongia').value.replace ('.','');
a2 = a2.replace(',','');
document.getElementById('txtketqua').value = parseFloat(a1) * parseFloat(a2)
formatNumber(document.getElementById('txtketqua')) ;
}

Bạn thử xem nhé.
Thân mến.

giamngucgames
04-05-2008, 01:19
Thành công rồi, cám ơn anh nhiều lắm