@ivanich274

Как запустить событие в JavaScript или имитировать ввод текста?

Суть в том, что я пишу приложение, которое вводит текст в поле ввода и отправляет его.

Соответственно, на самом сайте написан JS код, который по событию ввода обрабатывает текст и по клику его отсылает через сокеты.

КОД с сайта, который создаёт форму ввода.

}, t.prototype.render = function() {
                    var e = Boolean(this.state.text && this.state.text.trim()) && !this.props.readOnly;
                    return s.default.createElement("div", {
                        className: "channel-footer"
                    }, this.renderAttachment(), s.default.createElement("form", {
                        className: "channel-footer-container",
                        ref: "container",
                        onSubmit: this.handleSubmit
                    }, s.default.createElement("span", {
                        className: "channel-footer-attach",
                        onClick: this.handleAttachmentShow
                    }), s.default.createElement("textarea", {
                        className: "channel-footer-input",                   
			  
			 value: this.state.text,				  
                        ref: "textarea",
                        maxLength: o,
                        disabled: this.props.readOnly,
                        onFocus: this.props.collapseTopbar.bind(this, !0),
                        onBlur: this.props.collapseTopbar.bind(this, !1),
                        onChange: this.handleInput,
                        onKeyDown: this.handleInput
                    }), s.default.createElement("button", {
                        className: "channel-send-button",
                        type: "submit",
                        disabled: !e,
                        onTouchStart: this.handleSubmit
                    })))
                },

Событие ввода текста
t.prototype.handleInput = function(e) {
                    e.target.value !== this.state.text && (this.setState({
                        text: e.target.value
                    }), window.localStorage.setItem("messenger-message-" + this.props.id, e.target.value), window.requestAnimationFrame(this.handleResize))
                },


Мои действия, во первых нужно вставить в поле текст.

textarea[i].value = 'Вставляем текст';

Далее, раз событие handleInput таким методом вставки текста не вызывается, вызываем событие onChange для элемента.

textarea[i].initEvent("onChange", false, false);

либо так
var evnt = textarea[i]['onChange'];
 evnt.call(textarea[i]);


Текст естественно вставляется в форму ввода, но ничего не происходит, отправить не выходить, событие всё равно не срабатывает. Другие события, типа onSubmit для формы итд уже отвечают за отправку, но перед отправкой, нужно чтобы текст лежал в переменной this.state.text или e.target.value - не знаю.

Кто что может подсказать по этому вопросу?
  • Вопрос задан
  • 1640 просмотров
Решения вопроса 1
dhs
@dhs
Web-разработчик
Если я правильно понял суть вопроса, попробуйте вызывать события таким способом:
var evt = document.createEvent('HTMLEvents');
evt.initEvent("change", true, true);
textarea[i].dispatchEvent(evt);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы