Javascript установить переменную для ввода, а затем перейти к странице

0

У меня есть вход, где, теоретически, пользователь вводит в поле, нажимает enter, и браузер переходит к входному тексту с добавлением.html в конце. Я изначально пытался разобраться с отправкой формы, но форма больше не отправляется после того, как я добавил preventDefault(); , То, что у меня сейчас, похоже, не задает переменную в элементе формы, а затем не попадает в часть URL. Мой код:

<form name="answerarea">
<input type="text" name="input">
</form>

тогда

function sendanswer( e ) {
if ( e.keyCode === 13 ) {
    e.preventDefault();
    var answer = this.document.answerarea.input.value;
    if (answer) { this.location.href = answer + ".html"; }
    }       
}

document.answerarea.input.onkeypress = sendanswer;

Любая подсказка, почему она не работает? Благодарю.

  • 1
    Избавься от this. ...
Теги:
variables
input

2 ответа

0
Лучший ответ

Вы вызываете функцию в событии keypress, поэтому this будет относиться к входу, в котором нет объекта input или location.

измените свой код следующим образом:

function sendanswer( e ) {
 if ( e.keyCode === 13 ) {
 e.preventDefault();
 var answer = document.answerarea.input.value;
 if (answer) { window.location.href = answer + ".html"; }
 }       
}
  • 1
    Спасибо! Это сработало. Также узнал немало о javascript из этого начинания.
  • 0
    Жаль, что у SO есть опция чата, я видел, как новые пользователи просят друзей поднять свой ответ и вставить копию оригинала. ~ LOL
2

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

function sendanswer( e ) {
    if ( e.keyCode === 13 ) {
        e.preventDefault();
        var answer = this.value;   
        if (answer) { 
            window.href = answer + ".html";
            return false;
        }
    }       
}

document.getElementsByTagName('input')[0].addEventListener("keyup", sendanswer);

Контекст этого будет меняться в зависимости от того, как вызывается sendanswer. ex: с .apply или .call позволит вам изменить контекст.

См. Также http://jsfiddle.net/KtXpV/ для примера.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню