Javascript设置变量输入,然后导航到页面

时间:2014-03-14 22:04:24

标签: javascript html variables input

我有一个输入,理论上,用户在框中键入,按回车键,浏览器导航到输入文本,末尾附加.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;

任何线索为什么它不起作用?感谢。

2 个答案:

答案 0 :(得分: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的调用方式而变化。例如:使用.apply.call将允许您更改上下文。

另请参阅http://jsfiddle.net/KtXpV/示例。

答案 1 :(得分:0)

您正在调用输入的keypress事件上的函数,因此this将引用输入,其中没有inputlocation对象..

按如下方式修改代码:

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