我有两种不同的形式,它们被包含在一个php文件中。它们的可见性基于onClick JS切换功能。切换效果很好。但是,如果我只填写其中一个表单并单击其相应的提交按钮,我将被发送回同一页面而不是我在broswer中指定的action.php文件:
http://localhost/?user_temp=f&pass_temp1=f&pass_temp2=ff&email_temp=f&answer1=3&submitbtn=Signup+Now
这个Javascript错误:“TypeError undefined document.hform.sSecureUser
两种表格也有自己的javascripts到MD5的一些数据,sSecureUser来自注册表。
有趣的是,如果我要删除其中一个inlcude表单,只留下提交表单,那就可以了。似乎这些形式的'javascript彼此冲突:/ ...
我尝试了this,但它对我不起作用,因为我的每个表单都使用java脚本。请提前帮助和感谢!!! ...如果您想查看我的任何表单,javascript或php文件,请告诉我......
切换代码:
<div>
<a href="/forms/login-form.php" onclick="toggle_visibility('login-div'); return false;">Login</a>
<div id="login-div" style="display:none">
<?php include($_SERVER['DOCUMENT_ROOT'].'/forms/login-form.php');?>
</div>
<a href="/forms/signup-form.php" onclick="toggle_visibility('signup-div'); return false;">Sign up</a>
<div id="signup-div" style="display:none">
<?php include($_SERVER['DOCUMENT_ROOT'].'/forms/signup-form.php'); ?>
</div>
<script type="text/javascript">
<!--
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block'){
e.style.display = 'none';
}
else{
e.style.display = 'block';
}
}
//-->
</script>
</div>
登录表格:
<div id="hasJavaScript1" style="display:none">
<form name="login">
Username:
<input type="text" name="user_temp" size=32 maxlength=32><br>
Password:
<input type="password" name="pass_temp" size=32 maxlength=32><br>
<input onClick="passResponse(); return false;" type="submit" name="submitbtn" value="Login now">
</form>
<form action="/action/login-action.php" METHOD="POST" name="hform">
<input type="hidden" name="secureuser">
<input type="hidden" name="securepass">
</form>
</div>
<script language="javascript" src="/js/md5.js"></script>
<script language="javascript">
<!--
document.getElementById('hasJavaScript1').style.display = 'block';
function passResponse() {
document.hform.secureuser.value = MD5(document.login.user_temp.value);
document.hform.securepass.value = MD5(document.login.pass_temp.value);
document.login.pass_temp.value = "";
document.hform.submit();
}
// -->
</script>
SignUP表格:
<?php include ($_SERVER['DOCUMENT_ROOT'].'/functions/functions.php');?>
<div id="hasJavaScript" style="display:none">
<form name="signup">
<label>Username</label> <input type="text" name="user_temp" size=32 maxlength=32><span>alphanumeric, no spaces</span><br>
<label>Type password</label> <input type="password" name="pass_temp1" size=32 maxlength=32><span>alphanumeric, 8-12 long</span><br>
<label>Retype password</label> <input type="password" name="pass_temp2" size=32 maxlength=32><br>
<label>Email</label> <input type="text" name="email_temp" size=32 maxlength=32><br>
<label> What is: </label><?php $captchaArray = myCaptcha(); echo $captchaArray['equation'];?><br>
<label>Answer</label><input type="text" name="answer1">
<input onClick="passResponse1(); return false;" type="submit" name="submitbtn" value="Signup Now">
</form>
<form action="/action/signup-action.php" METHOD="POST" name="signup-hform">
<input type="hidden" name="sSecureUser">
<input type="hidden" name="sSecurePass1">
<input type="hidden" name="sSecurePass2">
<input type="hidden" name="secureEmail">
<input type="hidden" name="answer2">
<input type="hidden" name="checker" value=".<?php echo $captchaArray['answer'];?> .">
</form>
</div>
<script language="javascript" src="/js/md5.js"></script>
<script language="javascript">
<!--
document.getElementById('hasJavaScript').style.display = 'block';
function passResponse1() {
document.signup-hform.sSecureUser.value = MD5(document.signup.user_temp.value);
document.signup-hform.sSecurePass1.value = MD5(document.signup.pass_temp1.value);
document.signup.pass_temp1.value = "";
document.signup-hform.sSecurePass2.value = MD5(document.signup.pass_temp2.value);
document.signup.pass_temp2.value = "";
document.signup-hform.secureEmail.value = MD5(document.signup.email_temp.value);
document.signup-hform.answer2.value = document.signup.answer1.value;
document.signup.answer1.value = "";
document.signup-hform.submit();
}
// -->
</script>
答案 0 :(得分:0)
我看到的一个问题是您没有在隐藏字段中指定任何值属性或值:
<input type="hidden" name="sSecureUser">
<input type="hidden" name="sSecurePass1">
<input type="hidden" name="sSecurePass2">
<input type="hidden" name="secureEmail">
<input type="hidden" name="answer2">
但是在你的JS中,你正在尝试访问value属性。
document.hform.sSecureUser.value = ...
尝试为这些添加值。我还会提供隐藏的表单ID并使用document.getElementById()
语法而不是document.hform.sSecureUser
语法。
就您的表单提交而言,您正在抑制第一个表单的操作,尝试填写第二个表单中隐藏字段的值,然后提交它。您的两个脚本对表单"hform"
使用相同的名称。他们需要独一无二。我也会给他们一个独特的身份。
另一个可能的问题是这一行:
<input type="hidden" name="checker" value=".<?php echo $captchaArray['answer'];?> .">
你正在使用。用于字符串连接,但它不在echo / print语句中。我认为它应该是:
<input type="hidden" name="checker" value="<?php echo $captchaArray['answer'];?>">