Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > ขอความช่วยเหลือครับ Jquery เวลาเราจะแก้ไข select หลายๆแถวครับ (ผมคงใหม่คับ ท่านเจ มาก )



 

ขอความช่วยเหลือครับ Jquery เวลาเราจะแก้ไข select หลายๆแถวครับ (ผมคงใหม่คับ ท่านเจ มาก )

 



Topic : 106025



โพสกระทู้ ( 74 )
บทความ ( 0 )



สถานะออฟไลน์




ที่ผมทำ คือ จะเช็คข้อมูลซ้ำกัน อ่ะคับ คือไม่ให้ชื่อซ้ำกัน ในแต่ละแถว
จัดผู้คุมสอบ

โค๊ดที่ผมทำ
หน้า view ประมาณ
Code (PHP)
  <td style="vertical-align:middle;width: 250px">
                            ที่ปรึกษา : 
                            <?php echo $list_test['teacher_prefix'] . '' . $list_test['teacher_name'] . ' ' . $list_test['teacher_surname'] ?>
                            <input type="hidden" name="teacher_id[]" value="<?php echo $teacher_id[] = $list_test['teacher_id'] ?>" />
                            <br>ผู้คุมสอบ : 
                            <select name="teacher_id_2[]" style="width: 150px;margin: 3px;" id='teacher_id_2'>
                                <option value="<?php echo $list_test['teacher_id_2'] ?>" >
                                    <?php echo $list_test['teacher_prefix_2'] . '' . $list_test['teacher_name_2'] . ' ' . $list_test['teacher_surname_2'] ?>
                                </option>
                                <?php foreach ($list_teachers as $list_teachers2) : ?>
                                    <option value="<?php echo $teacher_id_2[] = $list_teachers2['teacher_id'] ?>"><?php echo $list_teachers2['teacher_prefix'] . $list_teachers2['teacher_name'] . '  ' . $list_teachers2['teacher_surname']; ?></option>

                                <?php endforeach; ?>

                            </select>

                            <br>ผู้คุมสอบ :
                            <select name="teacher_id_3[]" style="width: 150px;margin: 3px;"  id="teacher_id_3"  >
                                <option value="<?php echo $list_test['teacher_id_3'] ?>">
                                    <?php echo $list_test['teacher_prefix_3'] . '' . $list_test['teacher_name_3'] . ' ' . $list_test['teacher_surname_3'] ?>
                                </option>
                                <?php foreach ($list_teachers as $list_teachers3) : ?>
                                    <option value="<?php echo $teacher_id_3[] = $list_teachers3['teacher_id'] ?>"><?php echo $list_teachers3['teacher_prefix'] . $list_teachers3['teacher_name'] . '  ' . $list_teachers3['teacher_surname']; ?></option>

                                <?php endforeach; ?>

                            </select>
                        </td > 


ส่วนของ jQ ผมเพิ่งลองเรียกมาดูหนะครับ แต่ปัญหาคือ มันคลิกแล้วเด้งเตือนเฉพาะแถวแรก แถวถัดไปไม่ได้เลยครับ ข้อมูลที่ต้องแสดงก็มีหลายแถวมาก T^T
Code (PHP)
$(function() {
    $("#schedule_test_id")(function() {
        var teacher_id_2 = $('#schedule_test_id').val();
        alert('value = ' + schedule_test_id);
    });

    $("#teacher_id_2").change(function() {
        var teacher_id_2 = $('#teacher_id_2').val();
        alert('value = ' + teacher_id_2);
    });
    $("#teacher_id_3").change(function() {
        var teacher_id_3 = $('#teacher_id_3').val();
        alert('value = ' + teacher_id_3);
    });
});
;




Tag : PHP, jQuery







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-02-19 22:51:52 By : chidkaii View : 765 Reply : 6
 

 

No. 1



โพสกระทู้ ( 355 )
บทความ ( 0 )



สถานะออฟไลน์


จากโค๊ดที่ให้มา ให้เดาว่าในทุกๆแถว

Code (PHP)
<select name="teacher_id_2[]" style="width: 150px;margin: 3px;" id='teacher_id_2'>


Code (PHP)
<select name="teacher_id_3[]" style="width: 150px;margin: 3px;"  id="teacher_id_3"  >


ตัวเลือกจะกำหนด ID ซ้ำกันแบบนี้ไปตลอดใช่ไหมครับ มันเลยทำงานแค่แถวเดียว เพราะ jQuery มันตรวจเจอแถวแรกก่อน แนะนำว่าค่า ID ไม่ควรมีค่าซ้ำกันในหน้านั้น

ถ้าใช่ ในการทำงานแบบเดิมซ้ำไปมาแบบนี้ แนะนำให้เรียกทำงานผ่านคลาสดีกว่าครับ แล้วกำหนดกลุ่มของตัว Select ของแต่ล่ะแถว ใช้ Tags Data เอาก็ได้


Code (PHP)
<select name="teacher_id_2[]" style="width: 150px;margin: 3px;" id="teacher_id_2" data-id="<?php echo $row_id; ?>" class="teacher_select">
...
<select name="teacher_id_3[]" style="width: 150px;margin: 3px;" id="teacher_id_3" data-id="<?php echo $row_id; ?>" class="teacher_select">


Code (PHP)
$(function() {
    $("#schedule_test_id")(function() {
        var teacher_id_2 = $('#schedule_test_id').val();
        alert('value = ' + schedule_test_id);
    });

    $(".teacher_select").change(function() {
        var group_id = $(this).attr("data-id");
        var teacher_id_2 = $('#teacher_id_2[data-id=' + group_id + ']').val();
        var teacher_id_3 = $('#teacher_id_3[data-id=' + group_id + ']').val();

        if(teacher_id_2 == teacher_id_3){
           alert(teacher_id_2 + '=' + teacher_id_3);
        }
        else{
           alert('Teach 2 = ' + teacher_id_2);
           alert('Teach 3 = ' + teacher_id_3);
        }
    });
});







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-19 23:19:37 By : zankumuro
 


 

No. 2



โพสกระทู้ ( 74 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากๆๆ น่ะ ครับ
ผมลองเอามาปรับใช้ ให้มันเช็คตอนเลือกเลยอ่ะครับ เลยเพิ่ม Onchang เข้าไป
Code (PHP)
                            <select name="teacher_id_2[]" style="width: 150px;margin: 3px;" id='teacher_id_2' data-id="<?php echo $i; ?>"  class="teacher_select" onchange="return check_manage_test();">


Code (PHP)
                            <select name="teacher_id_3[]" style="width: 150px;margin: 3px;"  id="teacher_id_3"  data-id="<?php echo $i; ?>"  class="teacher_select" onchange="return check_manage_test();">



JQ
Code (PHP)
///เช็คการจัดคุมสอบ
function check_manage_test() {
    $(".teacher_select").change(function() {
        var group_id = $(this).attr("data-id");
        var teacher_id_2 = $('#teacher_id_2[data-id=' + group_id + ']').val();
        var teacher_id_3 = $('#teacher_id_3[data-id=' + group_id + ']').val();

        if (teacher_id_2 == teacher_id_3) {
            alert("คุณเลือก ผู้คุมสอบซ้ำกัน");
            return false;
        }
        else {
           // alert('Teach 2 = ' + teacher_id_2);
           // alert('Teach 3 = ' + teacher_id_3);
        }
    });


}


แต่ผลที่ได้คือมันเด้ง 4 อันเลยอ่ะ ครับ ถ้าซ้ำแม้แต่อันเดียวมันก็เด้งว่าซ้ำ 4 ครั้ง เหมือนมันจะมาเช็คทั้งหมดตั้งแต่ต้นเลยอ่ะ พอจะมีวิธีให้มันเช็คเฉพาะแถวที่มีการเปลี่ยนแปลงไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-20 00:11:24 By : chidkaii
 

 

No. 3



โพสกระทู้ ( 355 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่ต้องใส่ onchange ครับ เนื่องจาก $(".teacher_select").change() ทำหน้าที่เช็คเมื่อมีการเปลี่ยนค่าอยู่แล้วครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-20 00:42:09 By : zankumuro
 


 

No. 4



โพสกระทู้ ( 74 )
บทความ ( 0 )



สถานะออฟไลน์


อ๋อครับ พอได้แล้วครับผม ขอบคุณมากๆๆๆ น่ะครับ ____/|\_____

แต่เหมือนค่ามันจะรวนๆอ่ะครับ ตั้งแต่แถว 2 ไป ไม่ได้เลือกซ้ำ แต่มันก็บอกว่าซ้ำอยู่อ่าคับ

Code (PHP)
$(function() {


    $(".teacher_select").change(function() {
        var group_id = $(this).attr("data-id");
        var teacher_id = $('#teacher_id[data-id=' + group_id + ']').val();
        var teacher_id_2 = $('#teacher_id_2[data-id=' + group_id + ']').val();
        var teacher_id_3 = $('#teacher_id_3[data-id=' + group_id + ']').val();
        
        if (teacher_id_2 == teacher_id) {
            alert("คุณเลือกผู้คุมสอบ ซ้ำ กับอาจารย์ที่ปรึกษา กรุณาเปลี่ยนใหม่");
        } else if (teacher_id == teacher_id_3) {
            alert("คุณเลือกผู้คุมสอบ ซ้ำ กับอาจารย์ที่ปรึกษา กรุณาเปลี่ยนใหม่");
        } else if (teacher_id_2 == teacher_id_3) {
            alert("คุณเลือกผู้คุมสอบซ้ำกัน กรุณาเปลี่ยนใหม่");
        }
        else {
            //alert('Teach 2 = ' + teacher_id_2);
            //alert('Teach 3 = ' + teacher_id_3);
        }
    });
});


Code (PHP)
 
<div class="col-md-9">
    <?php if (isset($user_type_id) and $user_type_id == 1) { ?>
        <ol class="intruction">
            <li><a href="<?php echo base_url() ?>index.php/login/loged">หน้าแรก</a></li>
            <li  class="space"></li>
            <li ><a href="<?php echo base_url(); ?>index.php/manage_test?test=<?php echo $_GET['test'] ?>">จัดการสอบ ครั้งที่ <?php echo $_GET['test'] ?></a> </li>
            <li  class="space"></li>
            <li class="now">อัพเดทการสอบ ครั้งที่ <?php echo $_GET['test'] ?> </li>
        </ol> 
        <div class="clear"></div>

    <?php } ?>
    <div class="main_topic_page">&nbsp&nbsp อัพเดทการสอบ  ครั้งที่ <?php echo $_GET['test'] ?> ::  </div>

    <div class="">

        <?php if (!empty($year)) { ?>
            ปีการศึกษา <?php echo $year + 543; ?>   เดือนที่ <?php echo $mount; ?> 
        <?php } ?>
    </div>

    <form method="post" name="update" action="<?php echo base_url(); ?>index.php/manage_test/update_test?update&test=<?php echo $schedule_test ?>" >
        <input  class="btn btn-success" type="submit" name="submit" value="บันทึก">
        <br> <br>

        <table  class="table table-bordered" style="font-size: small;text-align: center">
            <tr class="info">
                <td>ที่</td><td>รายชื่อนักศึกษา</td><td>หัวข้อ</td><td>ประเภทเอกเทศ</td><td>อาจารย์คุมสอบ</td><td>วันที่สอบ</td><td>รายละเอียด</td><td>สถานะ</td>
            </tr>
            <?php
            $i = 1;
            if (!empty($list_test)) {

                foreach ($list_test as $list_test) {
                    ?>
                    <tr >

                        <td style="vertical-align:middle;"><?php echo $i; ?>
                            <input type="hidden" name="schedule_test_id[]" value="<?php echo $list_test['schedule_test_id']; ?>" id="schedule_test_id"/>
                        </td>

                        <td style="vertical-align:middle;" id="student_name"><?php echo $list_test['student_prefix'] . $list_test['student_name'] . ' ' . $list_test['student_surname']; ?>
                        <td style="vertical-align:middle;"><?php echo $list_test['thesis_name'] ?></td> 
                        <td style="vertical-align:middle;"><?php echo $list_test['thesis_type_name'] . $list_test['thesis_type_other_name'] ?></td>
                        <td style="vertical-align:middle;width: 250px">
                            ที่ปรึกษา : 
                            <?php echo $list_test['teacher_prefix'] . '' . $list_test['teacher_name'] . ' ' . $list_test['teacher_surname'] ?>
                            <input type="hidden" name="teacher_id[]" value="<?php echo $teacher_id[] = $list_test['teacher_id'] ?>" id="teacher_id" data-id="<?php echo $i; ?>"  class="teacher_select"/>
                            <br>ผู้คุมสอบ : 
                            <select name="teacher_id_2[]" style="width: 150px;margin: 3px;" id='teacher_id_2' data-id="<?php echo $i; ?>"  class="teacher_select">
                                <option value="<?php echo $list_test['teacher_id_2'] ?>" >
                                    <?php echo $list_test['teacher_prefix_2'] . '' . $list_test['teacher_name_2'] . ' ' . $list_test['teacher_surname_2'] ?>
                                </option>
                                <?php foreach ($list_teachers as $list_teachers2) : ?>
                                    <option value="<?php echo $teacher_id_2[] = $list_teachers2['teacher_id'] ?>"><?php echo $list_teachers2['teacher_prefix'] . $list_teachers2['teacher_name'] . '  ' . $list_teachers2['teacher_surname']; ?></option>

                                <?php endforeach; ?>

                            </select>

                            <br>ผู้คุมสอบ :
                            <select name="teacher_id_3[]" style="width: 150px;margin: 3px;"  id="teacher_id_3"  data-id="<?php echo $i; ?>"  class="teacher_select">
                                <option value="<?php echo $list_test['teacher_id_3'] ?>">
                                    <?php echo $list_test['teacher_prefix_3'] . '' . $list_test['teacher_name_3'] . ' ' . $list_test['teacher_surname_3'] ?>
                                </option>
                                <?php foreach ($list_teachers as $list_teachers3) : ?>
                                    <option value="<?php echo $teacher_id_3[] = $list_teachers3['teacher_id'] ?>"><?php echo $list_teachers3['teacher_prefix'] . $list_teachers3['teacher_name'] . '  ' . $list_teachers3['teacher_surname']; ?></option>

                                <?php endforeach; ?>

                            </select>
                        </td > 
                        <td style="vertical-align:middle;">
                            <input type="date" name="schedule_test_date[]" value="<?php echo $list_test['schedule_test_date']; ?>">
                        </td>
                        <td style="vertical-align:middle;">
                            <textarea name="schedule_test_detail[]" rows="4">
                                <?php echo $list_test['schedule_test_detail'] ?>
                            </textarea>
                        </td>

                        <td style="vertical-align:middle;">
                            <select name="schedule_test_status_id[]">
                                <option value="<?php echo $list_test['schedule_test_status_id'] ?>" ><?php echo $list_test['schedule_test_status_name'] ?></option>
                                <option value="0">ยังไม่ได้สอบ</option>
                                <option value="1">สอบแล้ว</option>
                                <option value="4">ยกเลิกการสอบ</option>
                            </select>

                        </td>

                    </tr>
                    <?php
                    $i++;
                }
            } else {
                ?>
                <tr><td colspan="8">ไม่มีนักศึกษายื่นคำร้อง ในเดือนนี้</td></tr>
                <?php
            }
            ?>
        </table>
    </form>

</div>





ประวัติการแก้ไข
2014-02-20 01:06:55
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-20 01:07:09 By : chidkaii
 


 

No. 5



โพสกระทู้ ( 355 )
บทความ ( 0 )



สถานะออฟไลน์


เป็นแบบนั้นเพราะว่าโค๊ดที่ผมให้ไปเป็นแนวทางเฉยๆครับ ปัญหาอย่างที่ผมบอกคือมีค่า ID ของแต่ล่ะ Element ซ้ำกัน เวลาเรียกทำงานผ่าน JS มันเลยสับสน ถึงแม้จะระบุค่าอื่นลงไปด้วย ในบางกรณีมันอาจใช้ได้ครับ แต่บัคก้จะตามมาอีก

แก้ไขแบบง่ายๆคือ ทำให้ ID ไม่ซ้ำกันครับ

Code (PHP)
<input type="hidden" name="teacher_id[]" value="<?php echo $teacher_id[] = $list_test['teacher_id'] ?>" id="teacher_id_<?php echo $i; ?>" data-id="<?php echo $i; ?>"  class="teacher_select"/>

<select name="teacher_id_2[]" style="width: 150px;margin: 3px;" id='teacher_id_2_<?php echo $i; ?>' data-id="<?php echo $i; ?>"  class="teacher_select">

<select name="teacher_id_3[]" style="width: 150px;margin: 3px;"  id="teacher_id_3_<?php echo $i; ?>"  data-id="<?php echo $i; ?>"  class="teacher_select">


ผมใส่ $i ต่อท่าย ID ของแต่ล่ะอันให้ไม่ซ้ำกันเวลาสร้างแถวขึ้นมาจริง แล้วคำสั่งจาวาสคริปต์ก็กำหนดไอดีให้ตรงกัน

Code (PHP)
 <script type="text/javascript">
$(function() {
    $(".teacher_select").change(function() {
        var group_id 		= $(this).attr("data-id");
        var teacher_id 		= $('#teacher_id_' + group_id + '[data-id=' + group_id + ']').val();
        var teacher_id_2 	= $('#teacher_id_2_' + group_id + '[data-id=' + group_id + ']').val();
        var teacher_id_3 	= $('#teacher_id_3_' + group_id + '[data-id=' + group_id + ']').val();
		
		alert('Teach 1 = ' + teacher_id + ' Teach 2 = ' + teacher_id_2 + ' Teach 3 = ' + teacher_id_3);
        
        if (teacher_id_2 == teacher_id) {
            alert("คุณเลือกผู้คุมสอบ ซ้ำ กับอาจารย์ที่ปรึกษา กรุณาเปลี่ยนใหม่ 1");
        } else if (teacher_id == teacher_id_3) {
            alert("คุณเลือกผู้คุมสอบ ซ้ำ กับอาจารย์ที่ปรึกษา กรุณาเปลี่ยนใหม่ 2");
        } else if (teacher_id_2 == teacher_id_3) {
            alert("คุณเลือกผู้คุมสอบซ้ำกัน กรุณาเปลี่ยนใหม่");
        }
        else {
            //alert('Teach 2 = ' + teacher_id_2);
            //alert('Teach 3 = ' + teacher_id_3);
        }
    });
});
</script>


น่าจะออกถูกต้องล่ะครับ

และในเมื่อ ID ไม่มีซ้ำแล้ว เวลาเรียกค่า ให้ระบุแค่ ID ของตัวที่ต้องการเรียกก้พอครับ ลดคำสั่งเพื่อประหยัดเนื้อที่ลงได้อีกเล็กน้อย

Code (PHP)
var teacher_id 		= $('#teacher_id_' + group_id).val();
var teacher_id_2 	= $('#teacher_id_2_' + group_id).val();
var teacher_id_3 	= $('#teacher_id_3_' + group_id).val();


ปล. อาจจะ Error น่ะ ผมไม่ได้เช็ค เขียนไปตามน้ำ


ประวัติการแก้ไข
2014-02-20 01:52:44
2014-02-20 01:52:46
2014-02-20 01:54:29
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-20 01:49:01 By : zankumuro
 


 

No. 6



โพสกระทู้ ( 74 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วครับผม ขอบคุณมากๆๆ ครับ ได้รู้พื้นฐานเยอะเลย
ผมจะศึกษาให้มากขึ้นน่ะครับ : )
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-02-20 12:41:55 By : chidkaii
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอความช่วยเหลือครับ Jquery เวลาเราจะแก้ไข select หลายๆแถวครับ (ผมคงใหม่คับ ท่านเจ มาก )
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 03
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่