-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

So from what I understood this code should work better. Also in your last function there is no type='dis'. That's a 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');
            }
        });
    });

And a fiddle to test it http://jsfiddle.net/Spokey/nhcsT/

UPDATDE:

You can add an <input type="hidden" id="changeme" value="0"> in your form and when the user selects the checkbox the value of the hidden input will change to 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 回答