Javascript:Enter不适用于提交密码

Javascript:Enter不适用于提交密码,javascript,html,passwords,submit,Javascript,Html,Passwords,Submit,我无法使以下代码正常工作:当我在文本框中按enter键时,该函数未被调用。我不明白为什么 <form> <p align="center"> <input type="password" class="password" name="text1" onkeypress="submitonenter(text1.value,"money","cash",event)" /><br> <input type="button" value="Ent

我无法使以下代码正常工作:当我在文本框中按enter键时,该函数未被调用。我不明白为什么

<form>
<p align="center">
<input type="password" class="password" name="text1" onkeypress="submitonenter(text1.value,"money","cash",event)" /><br>
<input type="button" value="Enter" style="width: 100px" name="Enter" onclick=javascript:validate(text1.value,"money","cash") />
</p>
</form>

<script type="text/javascript">
    function submitonenter(text1,text2,text3,evt) {
        evt = (evt) ? evt : ((window.event) ? window.event : "")
        if (evt) {
            // process event here
            if ( evt.keyCode==13 || evt.which==13 ) {

 if (text1==text2)
 load('money/welcome.html');
 else 
 {
  if (text1==text3)
  load('cash/welcome.html');
   else
   {
   load('failure.html');
   }
 }

            }
        }
    }
</script>

<script language = "javascript">
function validate(text1,text2,text3)
{
 if (text1==text2)
 load('money/welcome.html');
 else 
 {
  if (text1==text3)
  load('cash/welcome.html');
   else
   {
   load('failure.html');
   }
 }
}
function load(url)
{
 location.href=url;
}
</script>


函数submitonenter(text1、text2、text3、evt){ evt=(evt)?evt:((window.event)?window.event:) 如果(evt){ //在此处理事件 if(evt.keyCode==13 | | evt.which==13){ 如果(text1==text2) 加载('money/welcome.html'); 其他的 { 如果(text1==text3) 加载('cash/welcome.html'); 其他的 { 加载('failure.html'); } } } } } 函数验证(text1、text2、text3) { 如果(text1==text2) 加载('money/welcome.html'); 其他的 { 如果(text1==text3) 加载('cash/welcome.html'); 其他的 { 加载('failure.html'); } } } 函数加载(url) { location.href=url; }
我不确定您为什么需要SubmitOnCenter功能

为什么不将输入
type='button'
更改为
type='submit'
,并将
onclick
关键字更改为
onsubmit

编辑: 抱歉,当然,
'onsubmit'
需要放在表单标签中,而不是输入中。 提供以下信息:

<form onsubmit=validate(text1.value,"money","cash") >
  <p align="center">
    <input type="password" class="password" name="text1" /><br>
    <input type="submit" value="Enter" style="width: 100px" name="Enter" />
  </p>
</form>



就像其他人所说的那样-删除onclick事件,将按钮更改为submit按钮,如果您需要在提交数据之前处理/重新格式化数据,则将其余代码放在表单上onsubmit标记引用的函数中。

我将全部重写,并使用input type=“submit”代替按钮(为了能够在Firefox上使用,我还更改了密码字段的访问权限):



函数验证(text1、text2、text3){ var form=document.getElementById('myForm'); 如果(text1==text2) form.action='money/welcome.html'; 否则{ 如果(text1==text3) form.action='cash/welcome.html'; 否则{ form.action='failure.html'; } } 返回true; }

已编辑:按照@mway的建议实施onSubmit(谢谢)。

在确认按下enter键后,您希望调用“evt.preventDefault()”以阻止默认操作(即表单提交)我相信现在发生的是,您正在设置location.href,但是表单在加载之前提交,因此它将重新加载同一页面


其他人提到了服务器端处理,从安全角度来看,这可能是一个好主意。目前此页面没有任何安全性。任何人都可以查看您的javascript并选择导航到两个欢迎页面(或失败页面)中的任何一个好像他们正确地输入了密码。如果这是为了安全,那么您可能想去阅读有关安全性的文章。总之,在服务器上进行密码检查并遵循逻辑,但没有那么容易猜到的密码。:)此外,您可能希望检查他们在每个页面(如欢迎页面)上是否提供了正确的密码。一旦您确认了会话变量的密码,就可以轻松地设置会话变量。

为什么不使用提交按钮?然后Enter将自动工作,而不需要Javascript。如果有一个默认的
action
参数,然后使用
onsubmit()
,相应地更改
action
值不是更好吗?是的,这样会更清晰、更可靠(如果浏览器禁用了Javascript)。谢谢你的观点。
<form id="myForm" method="POST" action="failure.html" onsubmit="return validate(document.getElementById('text1').value,'money','cash');">
<p align="center">
<input type="password" class="password" name="text1" id="text1"/><br>
<input type="submit" value="Enter" style="width: 100px" name="Enter" />
</p>
</form>

<script language = "javascript">
    function validate(text1,text2,text3) {
         var form=document.getElementById('myForm');
         if (text1==text2)
            form.action='money/welcome.html';
         else {
          if (text1==text3)
            form.action='cash/welcome.html';
           else {
              form.action='failure.html';
           }
         }
         return true;
    }
</script>