我对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;当按下回车键时,变量为用户输入的内容。可能有一个更简单的方法来解决这个问题。我的目标是向用户提出一系列问题,然后在按下回车键后显示在页面上,然后显示其他显示的消息。
答案 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
,并且没有显示该代码。