当按下enter时,javascript设置变量值

时间:2013-08-15 04:39:04

标签: javascript jquery html

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

<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);

对于我的生活,我无法弄清楚是否能够获得“确定用户选择”的功能。设置&#39; userEntry&#39;当按下回车键时,变量为用户输入的内容。可能有一个更简单的方法来解决这个问题。我的目标是向用户提出一系列问题,然后在按下回车键后显示在页面上,然后显示其他显示的消息。

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作。

在文本框中附加事件处理程序以执行按键事件。我使用它的class='inner-choice-entry来引用它。

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

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

修改determineUserChoice功能,如下所示。这是为了克服Thierry J的回答中提到的观点。 getElementsByName方法返回具有给定名称的所有元素的数组。使用getElementsByName('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;

答案 1 :(得分:0)

你可以这样做:

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

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

答案 2 :(得分:0)

document.getElementsByName会返回nodeList,而不是单个元素。在获取其值之前,您需要对其进行索引以获取元素,因此它应该是:

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

我假设您在某个地方绑定了处理程序addEventHandler,并且没有显示该代码。