以编程方式检测textarea值更改

时间:2016-04-30 09:39:03

标签: jquery textarea onchange

我有一个textarea字段,其值以编程方式设置。我想知道何时设置该值并在设置值后执行进一步的操作。我试过了.on("change"), .bind("input propertychange"),但似乎没有任何效果。有什么建议吗?

<textarea id="testField"></textarea>

$("#testField").on("change keyup", function() {
    // your code here
    alert("Changed");
});

干杯。

1 个答案:

答案 0 :(得分:0)

似乎更改事件仅在用户与UI直接交互时触发。

重新定义触发我的特定textarea元素的更改事件的value属性:

// A specific instance of HTMLTextAreaElement
var txt = document.getElementById('txtDescripcion');

// define value property for your input instance
Object.defineProperty(txt, 'value', {
    set: function(newValue) {
        var valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');
        var oldValue = valueProp.get.call(txt);
        valueProp.set.call(txt, newValue);

        // Trigger the change event if value changed
        if (oldValue != newValue) {
            txt.dispatchEvent(new InputEvent('change'));
        }
    },
    get: function() {
        var valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');
        return valueProp.get.call(txt);
    }
});