更改事件不在隐藏字段jquery中触发

时间:2015-08-05 12:19:43

标签: jquery

我有一个隐藏字段'Edit-WorkOrderId'。

  function fn_formCreated(event, data) {
        $("#Edit-WorkOrderId").change(function() {
            if ($(this).val() == "") {
                $("#Edit-ProductionStageId option[value='-1']").attr("selected", "selected");
                $("#Edit-ProductionStageId").attr("disabled", true)
                    .closest("div.jtable-input-field-container")
                    .removeClass("mandatory");
            } else {
                $("#Edit-ProductionStageId").removeAttr("disabled")
                    .closest("div.jtable-input-field-container")
                    .addClass("mandatory");
                fn_GetWorkOrderDeatils();
            }
        });
        if (data.formType == "create") {
            $("#Edit-WorkOrderId").trigger("change");
            fn_GetBusinessUnit();
        }
    }

当值更改时,更改事件不起作用。 谢谢你。

3 个答案:

答案 0 :(得分:2)

您必须定义更改事件,如下所示,假设Edit-WorkOrderId是字段的ID

$('#Edit-WorkOrderId').on('change', function() {
    //do something;
});

function fn_formCreated(event, data) {
   // do something.
   if (data.formType == "create") {
        $("#Edit-WorkOrderId").trigger("change");
        fn_GetBusinessUnit();
   }
}

答案 1 :(得分:1)

您需要将更改绑定放在$(document).ready(function{})调用中。

$(document).ready(function () {
    $("#Edit-WorkOrderId").on('change',function () {
        if ($(this).val() == "") {
            $("#Edit-ProductionStageId option[value='-1']").attr("selected", "selected");
            $("#Edit-ProductionStageId").attr("disabled", true)
                .closest("div.jtable-input-field-container")
                .removeClass("mandatory");
        } else {
            $("#Edit-ProductionStageId").removeAttr("disabled")
                .closest("div.jtable-input-field-container")
                .addClass("mandatory");
            fn_GetWorkOrderDeatils();
        }
    });
})

function fn_formCreated(event, data) {
    if (data.formType == "create") {
        $("#Edit-WorkOrderId").trigger("change");
        fn_GetBusinessUnit();
    }
}

答案 2 :(得分:1)

尝试这样的事情:



$('#Edit-WorkOrderId').on('input change', function() {
  if (this.value === '') {
    alert('no value');
  } else {
    alert(this.value);
  }
}).change();

setTimeout(function() {
  $('#Edit-WorkOrderId').val('newValue in timeout.').trigger('change');
}, 1000);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='hidden' id='Edit-WorkOrderId' value=''>
&#13;
&#13;
&#13;

您需要在更新值时触发更改。

一些注意事项:

  1. 您正在函数中绑定change事件。
  2. 当您调用此函数时,它仅注册更改事件。不会解雇它。
  3. 您需要将更改事件放入doc中。