Как использовать «значение» тега ввода в мифриле. js - PullRequest
0 голосов
/ 10 марта 2020

Я хочу иметь возможность хранить значение текста, введенного в переменную. Я думал, что-то вроде бы будет работать:

m('input', {
    placeholder: 'Type to search...',
    oninput: () => { alert(this.value) }
})

Я использовал alert() только для проверки. Всякий раз, когда ввод был дан, он просто выдавал сообщение «undefined».

Ответы [ 2 ]

1 голос
/ 11 марта 2020

Функции стрелок () => {} не имеют this. Чтобы полагаться на обработчики событий, привязывающие this к элементу, инициирующему событие, вы должны будете использовать:

// the traditional function form...
m('input', {
    placeholder: 'Type to search...',
    oninput: function(){ alert(this.value) }
})

// ...or the modern method shorthand:
m('input', {
    placeholder: 'Type to search...',
    oninput(){ alert(this.value) }
})

В качестве альтернативы вы можете вообще избежать this (в конце концов, это неоднозначно, так как мы только что видели), сохраните функцию стрелки и используйте объект события, предоставленный в качестве первого аргумента обработчику события:

m('input', {
    placeholder: 'Type to search...',
    oninput: e => { alert(e.target.value) }
})
0 голосов
/ 10 марта 2020

Хорошо .. Я понял это. Я сделал отдельную функцию и нашел элемент, используя DOM, и получил оттуда значение:

function boxValue() {
  alert(document.getElementById('GIFSearchBar').value);
}
m('input', {
    id: 'searchBox',
    placeholder: 'Type to search...',
    oninput: () => { boxValue() }
})

Сейчас я буду отмечать это как решение (как только смогу), но если кто-нибудь придумает лучший ответ, я изменю принятый ответ.

...