2011-10-17 2 views
0

그래서 나는이 같은 몇 가지 형태를 가지고 있다고 할 수있는 단일 형태 '값을 사용하여 여러 양식을 제출아약스

<form name="formA"> 
    <input type="text" name="username"> 
    <input type="text" name="password"> 
</form> 

양식 B :

<div style="display:none;"> 
    <form name="formB"> 
    <input type="text" name="username"> 
    <input type="text" name="password"> 
    </form> 
</div> 

양식 C :

<div style="display:none;"> 
<form name="formC"> 
    <input type="text" name="username"> 
    <input type="text" name="password"> 
</form> 
</div> 

서식 B와 C가 숨겨져 있기 때문에, 사용자가 양식 A에 사용자 이름과 암호를 입력 한 후에 양식 B와 C에서 사용하기 위해 제출 한 사용자 이름과 암호 정보를 사용하고 모든 양식을 한 번에 제출해야하기 때문에 거기에 있습니다. 이렇게해서 단 하나의 로그인 양식을 사용하여 웹 사이트의 여러 부분에 로그인을 제출할 수 있습니다. 이 일을 수행하려면 어떻게해야합니까?

- 고마워요!

+1

먼저 필드 비밀번호로 입력 유형 ** 텍스트 => 비밀번호 **를 변경하십시오. – punit

답변

1

, 당신이 사용하는 jQuery를하고 ajaxForm 플러그인을 시도 할 수 있습니다 :

<form name="formA" action="actionA"> 
    <input id="usernameA" type="text" name="username"> 
    <input id="passwordA" type="password" name="password"> 
</form> 

<div style="display:none;"> 
    <form name="formB" action="actionB"> 
    <input id="usernameB" type="text" name="username"> 
    <input id="passwordB" type="password" name="password"> 
    </form> 
</div> 

<div style="display:none;"> 
    <form name="formC" action="actionC"> 
    <input id="usernameC" type="text" name="username"> 
    <input id="passwordC" type="password" name="password"> 
    </form> 
</div> 


$('#formA').submit(function() { 
    var username = $('#usernameA').val(); 
    var password = $('#passwordA').val(); 

    $('#usernameB').val(username); 
    $('#passwordB').val(password); 
    $('#usernameC').val(username); 
    $('#passwordC').val(password); 

    $('#formB').ajaxForm(function() { 
     alert("You have been logged in at B"); 
    }); 
    $('#formC').ajaxForm(function() { 
     alert("You have been logged in at C"); 
    }); 
}); 

당신은 B와 C에서 로그인에 대한 서버에 아약스 요청을 보낼 때, 당신의 경우 서버가 성공적으로 로그인하면 쿠키를 다시 보내야합니다. P

0

각 변수 이름에 대해 여러 값을 사용할 수 있습니다. 예 :

<form name="formABC"> 
    <div id="formA"> 
    <input type="text" name="username[]"> 
    <input type="text" name="password[]"> 
    </div> 
    <div id="formB" style="display:none;"> 
    <input type="text" name="username[]"> 
    <input type="text" name="password[]"> 
    </div> 
    <div id="formC" style="display:none;"> 
    <input type="text" name="username[]"> 
    <input type="text" name="password[]"> 
    </div> 
</form> 
+0

그러나 이것은 각각의 폼이 자체 "액션"을 가지고 작동합니다. – MJ93

0

1) 암호 입력 필드에는 type="password"을 사용해야합니다.

2) 한 번에 두 가지 이상의 양식을 제출할 수 없습니다. 제출 된 양식의 데이터 만 전송됩니다. 내가 이해하고있는 것으로부터, 하나의 버튼이 3 개의 서로 다른 세션을 저장하기 위해 3 개의 서로 다른 로그인 양식에 3 개의 다른 페이지를 열도록하고 싶습니다. URL에 세션 ID를 첨부하는 등 웹 사이트의 여러 섹션에서 세션 (또는 쿠키)을 작동시키는 더 좋은 방법이 있으므로 항상 모든 페이지로드에 대해 세션 ID를 유지해야합니다.

3) 양식에 action이 정의되어 있어야합니다. 당신이 로그인 기능을 위해 HTTPS를 필요로하지 않는 경우

+0

고마워요. 나는 타입 = "비밀번호"를 넣지 않았거나 폼에 대한 액션을하지 못했습니다. 그것은 단지 예일뿐입니다. 어딘가에 내가 쿠키/세션 ID를 URL에 첨부하는 방법을 배울 수 있습니까? – MJ93

+0

@ MJ93 : [url을 통한 세션 ID 전달] (http://stackoverflow.com/questions/827910/passing-session-id-via-url) -하지만 실제로 이동할 때 URL에 ID를 추가하는 것이 좋습니다. PHP 설정을 사용하는 대신 웹 사이트의 다른 섹션을 사용하십시오. – animuson