当我在渲染视图后设置该输入类型的值时,为什么输入类型的更改事件不会触发?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我在渲染视图后设置该输入类型的值时,为什么输入类型的更改事件不会触发?相关的知识,希望对你有一定的参考价值。

在骨干视图中,在其事件哈希中,我添加了一个输入类型的已更改事件,该事件将触发函数并将值设置为视图上的某些元素。现在在视图渲染中,我使用下划线延迟方法将值设置为输入类型,以便在视图附加到DOM后设置值。这会在视图上设置输入类型的值,但不会触发它的已更改事件,应该为视图内的其他字段设置值。

任何帮助表示赞赏!

SomeView = Backbone.View.extend({
    template: 'example.html',
    events: {
        "change #InputElementId": "UpdateFields"
    },
    renderTemplate: function () {
        var view = this,
            model = view.options.selectedModel;

        podiumApp.fetchTemplate(view.template, function (tmpl) {
            view.$el.html(tmpl(model.toJSON()));
        });
    },
    render: function () {
        var view = this,
        view.renderTemplate();
        _.defer(view.loadInputValue);    `enter code here`   

        return view;
    },
    loadInputValue: function () {

            $('#InputElementId').val(model.get('InputRangeValue'));
    },
    UpdateFields: function(){`enter code here`
    // Some logic`enter code here`
      console.log('Changed event fired');
    });
答案

以编程方式设置值不会触发change事件,您必须自己触发它

this.$('#InputElementId').val(model.get('InputRangeValue')).trigger('change');


  SomeView = Backbone.View.extend({
      template: 'example.html',
      events: {
        'change #InputElementId': 'updateFields'
      },
      initialize: function() {
        this.model = this.options.selectedModel;
      },
      renderTemplate: function() {
        podiumApp.fetchTemplate(this.template, function(tmpl) {
          this.$el.html(tmpl(this.model.toJSON()));
        }.bind(this));
      },
      render: function() {
        this.renderTemplate();
        _.defer(this.loadInputValue.bind(this));
        return this;
      },
      loadInputValue: function() {
        var value = this.model.get('InputRangeValue');
        this.$('#InputElementId').val(value).trigger('change');
      },
      UpdateFields: function() {
        // Some logic
        console.log('Changed event fired');
      });

以上是关于当我在渲染视图后设置该输入类型的值时,为什么输入类型的更改事件不会触发?的主要内容,如果未能解决你的问题,请参考以下文章

单击操作表Objective-C Prime No,从文本字段输入的值时填充TableView

从 Django 表单中写入输入类型的值

当我尝试从文本文件输入值时,为啥我的类列表(在 C++ 中)会引发错误?

输入类型日期的占位符(仅当未输入值时)

ios设备输入类型=“文本”值在我们输入值时未显示

当我绑定它的值时,SwiftUI TextField 的行为很奇怪(不能输入中文,偶尔退格会跳过一个字符)