//修改
        function update(rowid) {
            if (rowid != null) {
                var rowObject = $("#myTab").jqGrid('getRowData', rowid);
                var term = rowObject.termYear;
                var yeardate = textList(term, "YEAR");
                var quarterdate = textList(term, "QUARTER");
                var monthdate = textList(term, "MONTH");
                $("#myTab").setColProp("termYear", { editoptions: { value: yeardate} });
                $("#myTab").setColProp("termQuarter", { editoptions: { value: quarterdate} });
                $("#myTab").setColProp("termMonth", { editoptions: { value: monthdate} });                $("#myTab").jqGrid('editRow', rowid, true);
                $("#myTab").setColProp(
                        "op",
                        {
                            formatter: function updFormatter() {
                                return '<a href="#" onclick=javascript:upd("' + rowid + '") >保存</a> '
                                      + '<a href="#" onclick=javascript:cancel()>取消</a>';
                            }
                        });
                $("#myTab").jqGrid('editRow', rowid, true);
                jQuery('#myTab').setRowData(rowid, {
                    op: ''
                });                $("#" + rowid + "_termYear").change(function () {
                    var tempTerm = $("#" + rowid + "_termYear").val();
                    var tempyeardate = textList(tempTerm, "YEAR");
                    var tempquarterdate = textList(tempTerm, "QUARTER");
                    var tempmonthdate = textList(tempTerm, "MONTH");
                    $("#myTab").setColProp("termYear", { editoptions: { value: tempyeardate} });
                    $("#myTab").setColProp("termQuarter", { editoptions: { value: tempquarterdate} });
                    $("#myTab").setColProp("termMonth", { editoptions: { value: tempmonthdate} });
                    //$("#" + rowid + "_termYear").
                    getSysConfig();
                    $("#myTab").jqGrid('editRow', rowid, true);
                });
                var rowObject = $("#myTab").jqGrid('getRowData', rowid);
                return;
            } else {
                alert("取值异常");
                return false;
            }
            return false;
        }
$("#" + rowid + "_termYear").change(function ())想给jqgrid的一个select添加一个onchange触发,但是这个触发只能触发一次,第二次就没有效果了,不知道这个问题有没有人能遇到,求解决方法,谢谢各路大神jqgridjavascriptjquery

解决方案 »

  1.   

    你调用那么多次editRow干嘛?change事件里面也调用editRow方法,会重建select导致事件丢失了,要重新绑定function changeEvent() {
                        var tempTerm = $("#" + rowid + "_termYear").val();
                        var tempyeardate = textList(tempTerm, "YEAR");
                        var tempquarterdate = textList(tempTerm, "QUARTER");
                        var tempmonthdate = textList(tempTerm, "MONTH");
                        $("#myTab").setColProp("termYear", { editoptions: { value: tempyeardate} });
                        $("#myTab").setColProp("termQuarter", { editoptions: { value: tempquarterdate} });
                        $("#myTab").setColProp("termMonth", { editoptions: { value: tempmonthdate} });
                        //$("#" + rowid + "_termYear").
                        getSysConfig();
                        $("#myTab").jqGrid('editRow', rowid, true);
    $("#" + rowid + "_termYear").change(changeEvent);}
    $("#" + rowid + "_termYear").change(changeEvent);
      

  2.   


    重复调用是因为要求触发事件之后jqgrid内容改变重新加载了,但同时需要保证jqgrid为edit状态
    我把代码照你的修改了下
    $("#" + rowid + "_termYear").change(function changeEvent() {
                    var tempTerm = $("#" + rowid + "_termYear").val();
                    var tempyeardate = textList(tempTerm, "YEAR");
                    var tempquarterdate = textList(tempTerm, "QUARTER");
                    var tempmonthdate = textList(tempTerm, "MONTH");
                    $("#myTab").setColProp("termYear", { editoptions: { value: tempyeardate} });
                    $("#myTab").setColProp("termQuarter", { editoptions: { value: tempquarterdate} });
                    $("#myTab").setColProp("termMonth", { editoptions: { value: tempmonthdate} });
                    //$("#" + rowid + "_termYear").
                    getSysConfig();
                    $("#myTab").jqGrid('editRow', rowid, true);
                    $("#" + rowid + "_termYear").change(changeEvent);
                });之后,可以了
    获益良多,谢谢!