【问题标题】:JQuery .change() method triggering when attached to an element who's data is changed dynamicallyJQuery .change() 方法在附加到动态更改数据的元素时触发
【发布时间】:2018-03-26 18:25:57
【问题描述】:

我有一个 JQuery 滑块。随着滑块的移动,一行代码改变了输入框的 val 属性。

我试图在输入框的值发生更改时触发该函数。但是,它仅在用户通过单击输入框直接更改值时触发。移动滑块没有任何作用。

有什么办法可以得到:

$('#element').change(function(){});

当元素中的数据被间接更改时触发?

谢谢

更新:

这是滑块代码和将值传递到输入框的代码。

$(this).slider({
    range : true,
    max:projectStart,
    min:projectEnd,
    step:86400,
    values:[ end, begin ],
    slide : function(event,ui) {
      //if (ui.values[1]>startLimit) {
          //ui.values[1]=startLimit;
          //return false;
      //}
        var g = (this.id);
        $('#form-' + IDNum + '-StartDate').val(new Date(ui.values[1]*-1000).toDateString());
        $('#form-' + IDNum + '-EndDate').val(new Date(ui.values[0 ]*-1000).toDateString());
    }
});

【问题讨论】:

    标签: jquery events onchange


    【解决方案1】:

    更改值时必须触发更改事件:

    $('#form-' + IDNum + '-StartDate').val(new Date(ui.values[1]*-1000).toDateString()).trigger("change");
    $('#form-' + IDNum + '-EndDate').val(new Date(ui.values[0 ]*-1000).toDateString()).trigger("change");
    

    或者

    $('#form-' + IDNum + '-StartDate').val(new Date(ui.values[1]*-1000).toDateString()).change();
    $('#form-' + IDNum + '-EndDate').val(new Date(ui.values[0 ]*-1000).toDateString()).change();
    

    【讨论】:

    • 您能否详细说明一下。 “你的价值”是什么意思?
    • 您肯定有一个函数,当您移动滑块时会调用该函数,该函数会更改您输入 no 的值?
    【解决方案2】:

    当您以编程方式更改任何控件的值时,您必须显式触发change 事件。

    在 jquery 中有两种方法可以做到这一点。首先在目标控件上调用change() 函数,然后调用trigger("change") 函数,该函数接受事件名称作为参数。

    在您的情况下,以下将起作用。

    $(this).slider({
        range : true,
        max:projectStart,
        min:projectEnd,
        step:86400,
        values:[ end, begin ],
        slide : function(event,ui) {
            //if (ui.values[1]>startLimit) {
                //ui.values[1]=startLimit;
                //return false;
            //}
            var g = (this.id);
            $('#form-' + IDNum + '-StartDate').val(new Date(ui.values[1]*-1000).toDateString()).change(); //Trigger change event
            $('#form-' + IDNum + '-EndDate').val(new Date(ui.values[0 ]*-1000).toDateString()).change(); //Trigger change event
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多