【问题标题】:jquery check box some ideasjquery复选框的一些想法
【发布时间】:2013-04-05 07:49:49
【问题描述】:

我试图在我的查询中创建一个禁用计算的复选框,这是我的

表格代码:

<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());
                        }

                    });







                });

【问题讨论】:

  • 你有什么问题??
  • 同意@Will.i.am......!!!!! ^^
  • Sooo,你到底有什么问题?
  • 我希望你只是把代码弄乱了,因为它充满了未关闭的函数。或许再安排一次?

标签: php jquery html performance


【解决方案1】:

所以据我了解,这段代码应该会更好。同样在您的最后一个函数中没有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/

更新:

您可以在表单中添加&lt;input type="hidden" id="changeme" value="0"&gt;,当用户选择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');
                }
            });

【讨论】:

  • 感谢您的帮助,它工作了,感谢购买,您如何简化我的代码对不起新手在这里
  • 如果他们选中复选框,我会尝试将值设为 1,如果不将其保存在数据库中,则设为 0
  • 我更新了我的帖子。我还通过只创建一个函数并在keyup 上触发它来简化代码。为此,我使用了来自 jQuery 的 .bind()。我建议你查看 jQuery 文档。
猜你喜欢
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2011-06-19
  • 2021-12-15
相关资源
最近更新 更多