2013-05-21 2 views
0

У меня есть две разные формы, которые включены в файл php. Их видимость основана на функции переключения onClick JS. Переключатель отлично работает. Однако, если я должен был заполнить только одну из форм и щелчок ее соответствующая кнопки отправки, я присылаю обратно на ту же страницу, а не файл action.php, что я с этим предписанным в технических заданиях в Broswer:Отослать только одну из двух переключающих форм

http://localhost/?user_temp=f&pass_temp1=f&pass_temp2=ff&email_temp=f&answer1=3&submitbtn=Signup+Now 

и эта ошибка JavaScript: «TypeError неопределенного document.hform.sSecureUser

Обе формы также имеет свои собственные JavaScripts для MD5 некоторых данные и sSecureUser приходит из Формы регистрации

Интересно, если я должен был удалить один из. формы inlcude, оставляющие только форму Submit, позволяют сказать, что это сработает. Кажется, что эти javascript этих форм являются clashi ng друг с другом:/...

Я пробовал 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> 

Форма регистрации:

<?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

обновлено спасибо за интерес @ManishJangir – JonathanScialpi

+0

Я не понимаю, что вы пытаетесь выполнить с помощью нескольких форм. В чем цель? – Revent

ответ

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 = ... 

Попробуйте добавить к ним значения. Я бы также дал ваши скрытые формы ids и использовал синтаксис 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'];?>"> 
+0

Я думаю, что JS работает, так это то, что document.hform.sSecureUser принимает значение из document.signup.user_temp.value (который определен в НЕ СКРЫТОМ ФОРМЕ). Затем это значение передается в hform .... Что касается имен отправлений. Ты прав. Я изменил второй и обновил код. Теперь я только отправляю форму для входа, хотя даже при нажатии кнопки SubmitUP submit. но по крайней мере я беру на какую-то страницу действий – JonathanScialpi

+0

исправьте меня, если я ошибаюсь в отношении Javascript ^^ .. обновление кода теперь, чтобы показать вам, что я сделал @revent – JonathanScialpi

+0

Выглядит лучше, но ваши функции JavaScript также должны иметь уникальные имена. – Revent