Javascript:Enter不适用于提交密码
我无法使以下代码正常工作:当我在文本框中按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
<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>