2009-11-10 5 views
20

좋아, 이것은 단지 내 정보를위한 것보다 덜 질문입니다 (왜냐하면 나는 약 4 가지 다른 해결 방법을 생각해 볼 수 있기 때문입니다. 너무 특별) 만 제출 버튼.자바 스크립트 제출 제출 버튼 값이 포함되지 않습니다

<input type='submit' name='submitDocUpdate' value='Save'/> 

를 그것과 관련된 특정 값을 가지고 있으며, 양식이 제출됩니다 때 나는 그 이름을 확인합니다.

if(isset($_POST['submitDocUpdate'])){ //do stuff 

을 그러나, 나는 '한 번이 submit 버튼이 아닌 Javascript를 통해 양식을 제출하려고합니다.

document.getElementById("myForm").submit(); 

문제는 1 개가 아니라면 정상적으로 작동합니다. 자바 스크립트 메소드를 통해 제출 된 $ _POST 값을 보면 submitDocUpdate를 포함하지 않습니다. 양식의 다른 모든 값을 가져 오지만 제출 단추 값은 가져 오지 않습니다.

내가 말했듯이, 나는 (숨겨진 변수를 사용하여 다른 양식 변수에 대한 isset 확인 등) 몇 가지 방법을 생각할 수 있지만 이것은 submit()의 올바른 동작인지 궁금 해서요. 왜냐하면 그것은 나에게 덜 직관적으로 보이기 때문입니다. 미리 감사드립니다.

답변

26

은 예, HTML 양식이 설계 되었기 때문에 그들이 클릭 한 제출 버튼의 가치를 보낼 수 있도록 (이다 HTMLFormElement.submit()

당신의 버튼 값이 전송되지 않습니다 제출 이유의 올바른 동작입니다 그렇지 않으면 활성화 됨). 이렇게하면 "미리보기"및 "저장"작업을 모두 원하는 시나리오와 같이 양식별로 여러 제출 버튼을 사용할 수 있습니다.

양식을 프로그래밍 방식으로 제출 중이므로 개별 제출 단추에 명시적인 사용자 작업이 없으므로 아무 것도 보내지 않습니다.

+0

아. 그것은 많은 의미가 있습니다. 프로그래밍 방식으로 여러 제출 버튼을 사용하여 제출하는 개념은 고려하지 않았습니다 (자주 사용하지는 않습니다). 고마워;) –

+0

성가신. 폼을 제출할 때 (버튼이 클릭 될 때) 트리거되는 버튼을 클릭 할 수 있도록 재정의하는 것처럼 보이는 $ form.on ('submit', function() {});)을 사용하고 있습니다. onclick을 사용하여 시도했는데 onclick은 버튼을 클릭하지 못하도록하기 위해 페이지를 변경하려고 할 때 양식이 제출되지 않도록 유지했으나 버튼을 비활성화하는 대신 ... 제출하기 전에 너 ... 설명 해줘서 고마워. – Jake

7

대신 다음을 사용하지 않으시겠습니까?

<input type="hidden" name="submitDocUpdate" value="Save" /> 
+0

@Tim Cooper - 양식에 여러 개의 버튼이 있다면 어떨까요? – MarcoZen

1

제출 버튼 값은 사용자가 버튼을 클릭하면 제출됩니다. form.submit()을 호출하면 버튼을 클릭하지 않습니다. 여러 개의 submit 버튼이있을 수 있으며, form.submit() 함수는 서버로 보내려는 것을 알 수있는 방법이 없습니다. jQuery를 1.0 이상의 버전을 사용

9

: 실제로 같은 문제를 통해 일하는

$('input[type="submit"]').click();

이 게시물 우연히 때. 아무 인자도 지정하지 않은 채로 click()을 클릭하면 선택한 요소에서 클릭 이벤트가 발생합니다. http://api.jquery.com/click/

+0

매우 흥미로운 팁. 감사. –

1

답변은 기술적으로 정확하지만. 지정할 가치가있는 방법이 있습니다. 실제로 from이 서버에 제출되면 제출 단추의 값은 제출 단추에 지정한 이름과 연관됩니다. Marcin 트릭이 작동하는 방법이며 사용하는 용도에 따라 여러 가지 방법이 있습니다. 전의.jQuery를 당신은

은 MVC에서
data: { 
    submitDocUpdate = "MyValue" 
} 

내가 사용하는 것 전달할 수 :

@using (Html.BeginForm("ExternalLogin", "Account", new { provider = "Steam" }, FormMethod.Post, new { id = "steamLogin" })) 
{ 
    <a id="loginLink" class="steam-login-button" href="javascript:document.getElementById('steamLogin').submit()"><img alt="Sign in through Steam" src="https://steamcommunity-a.akamaihd.net/public/images/signinthroughsteam/sits_01.png"/></a> 
} 
: 나는 OAUTH를 사용하여 로그인 링크로 그들의 자신의 이미지를 사용하여 증기의 요구 사항을 준수하는 방법

@using (Html.BeginForm("ExternalLogin", "Account", new { submitDocUpdate = "MyValue" })) 

이 실제로

관련 문제