1

我对 JavaScript 很陌生,但我确信当在 HTML 文本输入框中按下 enter 时,必须有一种简单的方法来设置变量值。

<input type='text' name='userEntry' class='inner-choice-entry' placeholder='Type your answer here' />

以下是在后台运行的,例如:

var userEntry;
function determineUserChoice(e) {
    if (e.which == 13 || e.keyCode == 13) {
        userEntry = document.getElementsByName('userEntry').value;      
    }
};

以下将用于向用户显示一条消息并提示他们输入一个值:

displayedLine = 'Please enter your name.';
$('.inner-content-text').html(displayedLine);
displayedChoiceLine = 'Your name is:';
$('.inner-choice-text').html(displayedChoiceLine);
determineUserChoice();
charName = userEntry;
$('.inner-content-sidebar-text-playername').html(charName);

在我的一生中,我无法弄清楚在按下回车键时让函数“determineUserChoice”将“userEntry”变量设置为用户输入的任何内容。可能有一种更简单的方法来解决这个问题。我的目标是向用户提出一系列问题,然后在按下回车键后显示在页面上,然后显示其他消息。

4

3 回答 3

2

您可以执行以下操作。

在您的文本框上为按键事件附加事件处理程序。我用它class='inner-choice-entry来引用它。

$('.inner-choice-entry').keydown(determineUserChoice);

注意:如果您可以id在输入字段中添加属性,则可以$('#userEntry')使用$('.inner-choice-entry').

修改determineUserChoice函数如下。这是为了克服蒂埃里 J 的回答中提到的观点。该getElementsByName方法返回具有给定名称的所有元素的数组。UsinggetElementsByName('userEntry')[0].value将只取第一个这样的元素的值name=userEntry

function determineUserChoice(e) {
    if (e.which == 13 || e.keyCode == 13) {
        console.log('ok');
        userEntry = document.getElementsByName('userEntry')[0].value; //note the change here.
        console.log(userEntry);
    }
};

注意:同样如上所述,如果您id在字段中添加一个,您可以获得如下值。

userEntry = document.getElementById('userEntry').value;
于 2013-08-15T05:03:46.013 回答
0

document.getElementsByName returns a nodeList, not a single element. You need to index it to get the element before getting its value, so it should be:

userEntry = document.getElementsByName('userEntry')[0].value;

I assume you're binding the handler with addEventHandler somewhere, and just didn't show that code.

于 2013-08-15T05:01:40.463 回答
0

你可以这样做:

<input onkeypress="determineUserChoice(event)" type='text' name='userEntry' class='inner-choice-entry' placeholder='Type your answer here' />

但请注意,document.getElementsByName(...)返回具有给定名称的所有元素的数组。用于document.getElementById(...)返回页面中给定的唯一元素id(因为 id 在页面中是唯一的)。

于 2013-08-15T04:47:30.393 回答