我有一个页面可以在每次刷新时加载随机MP3文件。用户必须通过文本形式输入基于声音猜测名称。我想检查他们对存储的字符串的输入,并刷新页面,如果它是正确的。否则,我不会给他们一个不正确的提醒,并保持在同一页面,以便他们可以再次猜测:
<div class="ui-widget" align="center">
<form method="post" action="" class="answer_box" onsubmit="return submit();">
<p>Which hero is it? <input id="tags" name="guess" /></p>
<script>
var key = <?php echo json_encode($rand_key) ?>;
var info = document.getElementById("guess").value;
function submit() {
if (key==info){
alert('Correct!');
return true;
}
else {
alert('Incorrect!');
returnToPreviousPage();
return false;
}
}
</script>
</form>
</div>
现在,无论输入如何,它都会将信息提交到新页面。 javascript警报也没有显示(我怀疑他们确实显示,但页面然后刷新,他们消失)。关键变量是PHP数组随机取值的关键,info应该是用户输入的文本。
答案 0 :(得分:6)
发现问题:
submit
作为函数名称,这是一个HtmlForm对象document.getElementById("guess").value;
正在寻找ID为“guess”且不存在的元素。我会像这样重写你的脚本:
<script>
var key = <?php echo json_encode($rand_key) ?>;
function my_submit(curr) {
var info = curr.guess.value;
if (key == info) {
alert('Correct!');
return true;
}
else {
alert('Incorrect!');
returnToPreviousPage();
return false;
}
}
</script>
<form onsubmit="return my_submit(this);">
<p>Which hero is it? <input id="tags" name="guess"/></p>
</form>
答案 1 :(得分:2)
你有问题:
<input id="tags" name="guess" />
id
为tags
,而不是guess
。
您应该使用document.getElementById("tags").value
。
答案 2 :(得分:2)
您正在尝试检索ID为&#34; guess的元素的值。&#34;将其更改为&#34;标记。&#34;
var info = document.getElementById("tags").value;
另外,正如@CodeGodie所提到的,您需要将函数名称更改为提交以外的其他名称。