2016-12-30 2 views
1

몇 가지 질문을 본 적이 있지만 동일하지는 않습니다. 중복 된 경우 미안합니다. 나는 자바 스크립트 숨기기 및 표시 기능을 사용하여 데이터베이스에 정보를 제출하는 양식을 제출 한 후 "감사합니다"메시지를 숨기려고 시도하지만 잘 작동하지만 페이지 이동을 막을 수 없습니다. 다음 페이지. 항상/about_you로 이동합니다.데이터베이스에 양식 제출시 페이지 다시로드 방지

양식의 맨 위에 onsubmit = "return false"를 사용하여 시도했지만 양식이 완전히 제출되지 않습니다. 시도했습니다 onclick = "false를 반환합니다." jquery 함수를 구현하는 방법을 잘 모르겠습니다. jquery에 관해서는 무엇이든 많이 알지 못합니다. 답변에 jquery가 관련되어 있으면 가능한 한 자세하게 설명해주십시오.

나는 페이지로드를 나중에 "설문 조사를 완료 해 주셔서 감사합니다."시도하고 있습니다. 그것은 1 페이지 웹 페이지이므로 다른 중복 버전의 웹 페이지로가는 것은 불가능합니다. 어떤 도움이라도 대단히 감사합니다. 고맙습니다.

이것은 자바 스크립트 기능입니다.

function hideyou(){ 
    document.getElementById("about_you_form").style.display = "none"; 
    document.getElementById("thank_you").style.dislay = "block"; 
} 

이것은이 내가 루비에 넣어 코드입니다

<input id="about_you_submit" type="submit" onclick="hideyou();" value="Submit"> 

를 제출합니다.

post '/about_you' do 

fname = params[:fname] 
lname = params[:lname] 
address = params[:address] 
address2 = params[:address2] 
city = params[:city] 
state = params[:state] 
zip_code = params[:zip_code] 
email = params[:email] 

db.exec("INSERT INTO public.users (fname, lname, address, address2, city, state, zip_code, email) 
VALUES ('#{fname}', '#{lname}', '#{address}', '#{address2}', '#{city}', '#{state}', '#{zip_code}', '#{email}')") 
+0

태그의'target ='숨겨진 또는 숨겨진 iframe이 – dandavis

+0

저는 이것을 수행하는 여러 가지 방법을 알고 싶습니다. 무슨 뜻인지 자세히 설명해주세요. fname이라는 라벨이 붙은 폼이 있다면 submit 태그 안에 target ... fname을 넣을 수 있습니까? – Mike

답변

2

페이지를 새로 고치지 않고 양식을 제출하려고합니다. 이제 양식을 제출할 수 있으며, 데이터 전송 및 DB에 저장하지만, 자바 스크립트입니다 : 브라우저 리디렉션 때문에,

document.getElementById("about_you_form").style.display = "none"; 
document.getElementById("thank_you").style.dislay = "block"; 

실행할 수 없습니다 그 일을 (당신은/about_you에 요청하고있다)를. 당신이해야 할 것은 간단한 AJAX 요청입니다 (백그라운드에서 데이터를 전송, 브라우저는 같은 페이지에 성공적으로 전송하고 서버에서 응답 후 유지 -에서 개막 자바 스크립트)

변경하여 hideyou 함수 :

function hideyou(e, btn){ 
    e.preventDefault(); 
    var form = $(btn).parents('form'); 

    $.ajax({ 
    type: "POST", 
    url: $(form).attr('action'), 
    data: $(form).serialize(), 
    success: function(response){ 
     document.getElementById("about_you_form").style.display = "none"; 
     document.getElementById("thank_you").style.dislay = "block"; 
    } 
    }); 

} 

다음 변경

<input id="about_you_submit" type="submit" onclick="hideyou();" value="Submit"> 

으로
<input id="about_you_submit" type="submit" onclick="hideyou(event, this);" value="Submit"> 
+0

당신이 내가 거기에서 무슨 일이 일어나고 있는지 이해하는데 도움이 될만한 것을 추가하십시오. url, data, serialize ... 나는 성공을 가정한다 : 기본적으로 (onsuccess이 함수를 실행한다) $ (btn) .parents ('form), 기본적으로 모든 것, 나는 익숙하지 않다. 그러나 그것은 위대하게 일했고 당신에게 그렇게 많이 감사합니다! – Mike

+0

확인. 나는 그걸로 놀고있다. 감사 메시지를 숨기는 숨기기 기능을 실행하여 페이지를 시작합니다. thank_you 메시지를로드하지 않는다는 점을 제외하고는 코드가 훌륭하게 작동했습니다. 나는 hideThankYou 함수를 처음부터 페이지의 맨 아래에두고, hide는 작동합니다. 그 코드를 막고있는 hide 함수가 thank_you id를 보여주지 못하도록 막았습니까? 이 함수는 – Mike

+0

입니다. thank_you 메시지를 숨기려면 함수를 사용하지 않아도됩니다. 대신 id = "thanks_you"(또는 무엇이든간에) html 요소에 인라인 스타일 style = "display : none"을 추가하십시오. 이렇게하면 기본적으로 메시지를 숨기기위한 별도의 자바 스크립트가 생기지 않습니다. – linderman