|
|
|
ถ้าต้องการเขียน check ว่า ปุ่ม checkbox นี้ check หรือ uncheck ต้องเขียนเงื่อนไขยังไงหรอคะ |
|
|
|
|
|
|
|
Code (JavaScript)
if( $('checkbox').prop('checked') ){
//is checked
}else{
//none checked
}
|
|
|
|
|
Date :
2018-10-07 21:53:56 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้อ่ะค่ะ ตรงส่วน else หนูผิดตรงไหนรึเปล่าคะ
Code (JavaScript)
if ($('messageCheckbox').prop('checked')){
$('.messageCheckbox').click(function(){
var priceID=$(this).val();
var priceold=parseInt($('#showprice').html());
fieldNum++;
$('#fieldNum').html(fieldNum); //# = ID, . = Class
$.get('checkprice.php?price='+priceID, function(data){
// alert(data);
var pricenew= priceold + parseInt(data);
$('#showprice').html(pricenew);
});
}else{
$('.messageCheckbox').click(function(){
var priceID=$(this).val();
var priceold=parseInt($('#showprice').html());
fieldNum--;
$('#fieldNum').html(fieldNum); //# = ID, . = Class
$.get('checkprice.php?price='+priceID, function(data){
// alert(data);
var pricenew= priceold - parseInt(data);
$('#showprice').html(pricenew);
});
}
|
ประวัติการแก้ไข 2018-10-07 22:49:37
|
|
|
|
Date :
2018-10-07 22:45:11 |
By :
1851112778284115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็น class ต้องใส่จุด
เป็น id ต้องต้องใส่ #
เป็น tag ต้องใส่ชื่อ tag
|
|
|
|
|
Date :
2018-10-07 23:15:06 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เป็น Class ค่ะ ใส่ .messageCheckbox แล้วก็ไม่ได้ค่ะ
|
ประวัติการแก้ไข 2018-10-07 23:26:12
|
|
|
|
Date :
2018-10-07 23:25:41 |
By :
1851112778284115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองทดสอบ แค่ if else ก่อน
if ($('.messageCheckbox').prop('checked')){
alert(' is checked');
}else{
alert(' no chedked');
}
คิดว่า if else คงไม่มีปัญหา น่าจะมีปัญหา การกำหนด function นั้นแหล่ะมั้ง
วงเล็บล่างมันไม่ครบ และ ใช้ เป็นฟังก์ชั่นเดียวแล้วเอา if else เข้าไปเช็คข้างใน เพื่อกำหนดการทำงาน ดีกว่าไหม
เขียนแบบนั้นมันซ้ำซ้อนไปหรือเปล่า
Code (JavaScript)
var sign = $('.messageCheckbox').prop('checked') ? 1 : -1
$(".messageCheckbox').click((e)=>{
//......
//.....
//.....
fieldNum += sign; //ถ้า sign มีค่าเป็น - ก็จะทหน้าที่ เหมือน fieldNum--; ถ้าเป็นบวกก็เหมือน fieldNum++
//....
//....
});
|
|
|
|
|
Date :
2018-10-08 00:01:50 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if else มันทำงานแค่ตรง else อ่ะค่ะ
|
|
|
|
|
Date :
2018-10-08 00:53:56 |
By :
1851112778284115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
งั้นขอดู html ที่เป็น checkbox หน่อยครับ เขียนอะไรผิดหรือเปล่า อาจจะอ้างอิง อะไรผิด
|
|
|
|
|
Date :
2018-10-08 10:58:42 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
checkbox เป็นการวนลูปค่ะ
Code (PHP)
if ($_SESSION['user_id']) {
if ($row['booking'] == "ว่าง") {
echo '<td id="col_checking" class="center" ><input class="messageCheckbox" id="booking'.$row["time_id"].'" type="checkbox" name="booking'.$row["time_id"].'" value="'.$row["time_id"].'"></input></td>';
} else {
echo '<td class="center"><input class="messageCheckbox" id="booking'.$row["time_id"].'" type="checkbox" name="booking'.$row["time_id"].'" value="'.$row["time_id"].'" disabled></input>
|
ประวัติการแก้ไข 2018-10-08 22:57:59
|
|
|
|
Date :
2018-10-08 22:51:58 |
By :
1851112778284115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พอใส่แบบนี้แล้วค่ามันแสดงติดลบตั้งแต่ค่าแรกเลยอ่ะค่ะ
Code (PHP)
if ($('.messageCheckbox').prop('checked')){
$('.messageCheckbox').click(function(){
var priceID=$(this).val();
var priceold=parseInt($('#showprice').html());
fieldNum++;
$('#fieldNum').html(fieldNum); //# = ID, . = ตัวแปล
$.get('checkprice.php?price='+priceID, function(data){
// alert(data);
var pricenew= priceold + parseInt(data);
$('#showprice').html(pricenew);
});
});
}else{
$('.messageCheckbox').click(function(){
var priceID=$(this).val();
var priceold=parseInt($('#showprice').html());
fieldNum--;
$('#fieldNum').html(fieldNum); //# = ID, . = ตัวแปล
$.get('checkprice.php?price='+priceID, function(data){
// alert(data);
var pricenew= priceold - parseInt(data);
$('#showprice').html(pricenew);
});
});
}
|
|
|
|
|
Date :
2018-10-08 23:12:29 |
By :
1851112778284115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
และคำสั่ง คห2 อยู่ใน loop เหมือนกันไหม
เดาเอาว่าอยู่ใน loop เหมือนกัน ไม่งั้น จะมี If มาตรวจสอบทำไม
ก็บอกได้เลยว่า algorithm ไม่ถูกต้อง
การกำหนด function ให้ class ไม่ต้องทำเป็น loop อาศัยอ้างอิง ข้อมูล ใน tag ที่แตกต่างกัน
1 เปลี่ยน algorithm ในการเขียนใหม่ ทำโค๊ดให้สั้นลง ถ้าเป็นไปได้ ส่งให้ไปทำงาน ที่ฝั่ง client ใช้ javascript ให้มากที่สุด ลดโหลด server
2 ลดการใช้ id ที่ซ้ำซ้อนลง id ควรจะเป็นแบบเฉพาะเจาะจง พยายามใช้ class ในการทำงาน ที่มี pattern เดียวกัน
3 ตั้งชื่อสั้นๆ แล้วสื่อความหมายได้ ให้ตั้งชื่อสั้นๆ เช่น booking เขียนแค่ bk_ ก็น่าจะเข้าใจ
เพราะยิ่งชื่อยาวจำนวนในการส่งข้อมูลผ่านเนตก็มากขึ้น
4 ตัวแปร global ประยุกต์ใช้งานให้ทันสมัยมากขึ้น ปลอดภัยมากขึ้น
5 javascript บางคำสั่ง ใช้ pure javascript บ้างก็ได้ ไม่ต้องผ่าน jquery ก็ได้สั่งงานตรงเลย
Code (PHP)
<?php
if (isset($_SESSION['user_id'])) {
$free = $row['booking'] == "ว่าง";
?>
<td class="center<?=($free ? ' col_checking' : '')?>" >
<input class="messageCheckbox" id="booking<?=$row["time_id"]?>" <?=($free ? '' : 'disabled')?>
type="checkbox" name="booking<?=$row["time_id"]?>" value="<?=$row["time_id"]?>"></td>
<?php
}
?>
<script>
// ส่วนของ javascript
$('.messageCheckbox').click(function(){
var priceID = this.value;
// var priceold = parseInt($('#showprice').html()); // ตรงนี้เป็น id แน่ใจ่วามีอันเดียวหรือเปล่า
var priceold = $(this).parents('tr').eq(0).find('#showprice').html(); // เปลี่ยนมาใช้แบบนี้ กับการใช้ id ที่ซ้ำซ้อนกัน
fieldNum += this.checked ? 1 : -1; // ตรงนี้ คือการตรวจสอบ ปุ่มเช็ค เขียนใน event click
$('#fieldNum').html(fieldNum); //# = ID, . = Class ตรงนี้ก็ด้วยเรื่อง ID ซ้ำไหม ลองเขียนแบบตัวอย่าง priceold
$.get('checkprice.php?price='+priceID, function(data){
// alert(data);
var pricenew= priceold + parseInt(data);
$('#showprice').html(pricenew); // นี่ก็ด้วย อ้างอิง id มีปัญหาแน่นอน
});
});
ปล. ดูเรื่องการใช้ ID ให้ดีครับ ถ้าใช้ id ในการอ้างอิงต้องคำนึงไว้ว่า ในข้อมูลหนึ่งๆ ถ้ามี id หลายอัน จะอ้างอิง id แรกเท่านั้น
|
ประวัติการแก้ไข 2018-10-08 23:53:00
|
|
|
|
Date :
2018-10-08 23:50:21 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตรง priceold ราคาไม่ขึ้นอ่ะค่ะ อยากให้พอคลิก checkbox แล้วบวกราคาไปตาม checkbox ที่คลิก พอ uncheck ก็ลบค่าอ่ะค่ะ ต้องเขียนยังไงหรอค่ะ
|
|
|
|
|
Date :
2018-10-09 02:15:37 |
By :
1851112778284115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวอย่างก็ บันทัด 17 ไงครับ คอมเม้นท์ ก็บอกแล้ว ต้องประยุกต์ ให้ตรงกับข้อมูลที่ทำไว้ครับ
ผมเดาเอาว่า ข้อมูลของคุณเป็นแบบนี้ เดานะเดา
Code (PHP)
<tr>
<td>description</td>
<td id="showprice">123456</td>
<.td><input type="checkbox" ></td>
</td>
จากตัวอย่าง บันทัด 17
Code (JavaScript)
var priceold = $(this).parents('tr').eq(0).find('#showprice').html(); // เปลี่ยนมาใช้แบบนี้ กับการใช้ id ที่ซ้ำซ้อนกัน
$(this).parents('tr').eq(0) คำสั่งนี้ ใช้ค้นหาว่า tr ที่ครอบข้อมูลคือตัวไหน
.find('#showprice').html() แล้วค้นหาว่า td ที่เก็บข้อมูล showprice เก็บอะไรไว้
ส่วนการอ้างอิง สำหรับใน function ajax success คุณต้อง กำหนดตัวแปร ไว้อ้างอิง tr ก่อนที่จะใช้ ajax
|
|
|
|
|
Date :
2018-10-09 06:36:00 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หวังว่าจะทำงานได้นะครับ
Code (JavaScript)
$('.checkboxClass').on('click', function(){
var price = 0;
$.each($('.checkboxClass'), function(){
if($(this).is(':checked')){
price = parseFloat(price) + parseFloat($(this).val());
}
});
$('#showprice').html(price);
});
|
|
|
|
|
Date :
2018-10-09 10:00:35 |
By :
Jatmentz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำได้แล้วนะคะ ขอบคุณมากๆเลยค่ะ สำหรับความรู้และคำแนะนำทุกๆอย่าง น้ำตาจะไหลกว่าจะได้
|
|
|
|
|
Date :
2018-10-11 21:34:42 |
By :
1851112778284115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|