2014-07-23 2 views
1

이것은 아주 간단한 것입니다. 하지만 왜 이런 일이 일어나는 지 알지 못합니다 ...

jQuery's .submit() method. 충분히 쉽고 - 함수를 전달하면 청취자 역할을합니다. 아무 것도 전달하지 말고 .trigger('submit')으로 전화하십시오. 그러나 지난 24 시간 동안 저에게 큰 골치 거리였습니다.

기본적으로 내가하려는 것은 간단한 검증 스크립트를 작성하는 것입니다. 사용자가 양식의 제출 버튼을 클릭하면 입력을 확인하기위한 함수가 실행되고 모든 것이 정상적으로 작동하면 양식이 제출됩니다 (기본 시나리오에서는이 시나리오에서는 멋진 아약스가 사용되지 않음). 이 문제는 jQuery 객체 또는 일반 'HTML HTML DOM 요소 객체에서 .submit을 호출하려고 할 때 발생합니다. 나는 jQuery가 HTMLFormElement의 네이티브 .submit을 죽인다는 것을 배웠다. 그래서 왜 그것이 작동하지 않는지 이해할 수있다. (아마도 그것은 바보 같다). 하지만 ... jQuery의 .trigger('submit') (또는 간단히 .submit())이 작동하지 않는 이유는 무엇입니까?

예 (또는 Fiddle를 찾아 보라) :

HTML :

<form class="comment-form" action="#" method="get"> 
    <input type="submit" id="submit" name="submit" value="submit"/> 
</form> 

자바 스크립트 : 나는에 .call()를 사용하여 양식을 호출하여 해결 방법을 찾았어요

$('.comment-form').on('click', '#submit', function(e) { 
    var form = e.delegateTarget; 

    e.preventDefault(); 

    // For the purpose of demonstration, just setting it true 
    if (true) { 
     form.submit(); // object is not a function - this makes sense since jQuery is overriding this 
     $(form).submit(); // nothin at all :(
     $(form).trigger('submit'); // nope, nada 
    } 
}); 

HTMLFormElement 프로토 타입,하지만 왜 이것을해야합니까?

왜? 왜? 왜?

+0

것은 키가 여기 된 이후 문제의 마크 업을 포함해야합니다. –

답변

3

귀하의 버튼 이름은 submit입니다. 따라서 form.submit이 제출 기능이 아닌 버튼이되었습니다.
즉, 네이티브 제출 기능을 제거하고 단추로 바꾼 것입니다. 따라서 "개체가 기능이 아닙니다" 오류가 발생합니다.

단추 이름을 submit 이외의 이름으로 변경하면 올바르게 작동합니다.

FIDDLE

+0

바이올렛에서'$ (form) .trigger ('submit');을 제거하십시오. – Runcorn

+0

바보 같은 느낌이 들지만, 어딘가에 감사드립니다. 그것이 단순한 것이라고 생각했지만, 다른 사람들이 같은 문제에 부딪히는 것을 도울 수 있기를 바랍니다. – SeeMeCode

+0

@SeeMeCode - 실제로 자리를 잡는 것은 어렵다. 그래서 바보처럼 느껴지지 마라. 그러면 당신이 그것을하는 첫번째 사람이 아니다. – adeneo