-1

私のクエリで計算を無効にするチェックボックスを作成しようとしています

フォームコード:

<input type="hidden" name="stud_no[]" value="<?php echo
$row['student_no'];?>"> <input type="text" name="prelim[]"
value="<?php echo $row['prelim_pts']?>" id="prelim_<?php echo
$row['student_no'];?>" class="txtprelim" ></td> <td><input
type="text" name="midterm[]" value="<?php echo
$row['midterm_pts']?>" id="midterm_<?php echo $row['student_no'];?>"
class="txtmidterm" ></td> <td> <input type="text" name="final[]"
value="<?php echo $row['finals_pts']?>" id="final_<?php echo
$row['student_no'];?>" class="txtfinal" ></td> <td> <input
type="text" name="average[]" id="average_<?php echo
$row['student_no']; ?>" value="<?php echo $row['average_pts']; ?>"
readonly="readonly"> </td> <td><input type="checkbox"
name="disable[]" value="<?php echo $row['disable_comp'];?>"
class="dis"> </td>

ここに私のjqueryコードがあります:

$(document).ready(function(){
                p="";       m="";       f="";




                $(".txtprelim").keyup(function(){           var id = $(this).attr("id").replace("prelim_","");
                p = $("#prelim_" + id).val();
                m = $("#midterm_" + id).val();
                f = $("#final_" + id).val();            Compute( p,m,f, id);            //alert($(".txtprelim").val());
                });
            $(".txtmidterm").keyup(function(){
                var id=$(this).attr("id").replace("midterm_","");
                    p = $("#prelim_" + id).val();
                    m = $("#midterm_" + id).val();
                    f = $("#final_" + id).val();

                Compute( p, m, f,id);           //alert($(".txtmidterm").val());
            });
            $(".txtfinal").keyup(function(){
                    var id=$(this).attr("id").replace("final_","");
                        p = $("#prelim_" + id).val();
                        m = $("#midterm_" + id).val();
                        f = $("#final_" + id).val();

                    Compute( p, m, f, id);

                    //alert($(".txtfinal").val());

                    //alert($("f").val());      }); 

        function Compute(p , m , f , studno){       //  alert("p="+p+" m="+m+"
f="+f);             var average="";
             average = parseFloat(p * 0.3) + parseFloat(m * 0.3 )+ parseFloat(f * 0.4);             $("#average_" +
studno).val(average.toFixed());

                //alert(average);       }



                    $("input[type='dis']").change ( function(){
                        var val =$(this).val();
                        if($(this).is(':checked'))
                        {
                            alert($(this).val());
                        }

                    });







                });
4

1 に答える 1

0

したがって、私が理解したことから、このコードはよりうまく機能するはずです。また、最後の関数にはありませんtype='dis'。それはclass

$(document).ready(function() {
        p = "";
        m = "";
        f = "";

        var computeValues = function(){
            var id = $(this).attr("id").replace("prelim_", "").replace("midterm_", "").replace("final_", "");
            p = $("#prelim_" + id).val();
            m = $("#midterm_" + id).val();
            f = $("#final_" + id).val();
            Compute(p, m, f, id);
        };

        $("input").bind('keyup', computeValues);

        function Compute(p, m, f, studno) {
            var average;
            average = parseFloat(p * 0.3) + parseFloat(m * 0.3) + parseFloat(f * 0.4);
            $("#average_" + studno).val(average.toFixed());     
        }

        $(".dis").change(function() {
            var val = $(this).val();
            if ($(this).is(':checked')) {
                $("input").unbind('keyup', computeValues);
            } else {
                $("input").bind('keyup', computeValues).trigger('keyup');
            }
        });
    });

そしてそれをテストするためのフィドルhttp://jsfiddle.net/Spokey/nhcsT/

更新:

フォームにを追加でき<input type="hidden" id="changeme" value="0">ます。ユーザーが を選択するとcheckbox、 の値が次のhidden inputように変わります。1

$(".dis").change(function() {
                var val = $(this).val();
                if ($(this).is(':checked')) {
                    $("input").unbind('keyup', computeValues);
                    $("#changeme").val('1');
                } else {
                    $("input").bind('keyup', computeValues).trigger('keyup');
                    $("#changeme").val('0');
                }
            });
于 2013-04-05T09:54:21.980 に答える