양식에서 onsubmit = "return false;"생각했어

7837 단어

모두가 알다시피 표에 onsubmit="return false;"를 첨가한다.폼 제출을 막을 수 있습니다.다음은 간단한 코드 한 소절입니다.
코드
 <form action="index.jsp" method="post" onsubmit="submitTest();">

    <INPUT value="www">

    <input type="submit" value="submit">

</form>

 

<SCRIPT LANGUAGE="JavaScript"> <!-- function submitTest() { // return false; } //--> </SCRIPT>


여러분은 위의 글쓰기 방법을 판단하고submit 단추를 누르면 이 폼을 제출합니까?
 
만약 답이 맞다면 아래를 볼 필요가 없다.
만약 답이 틀렸다면 틀렸다.실제 상황은 폼이 정상적으로 제출되는데, 제출하지 않으려면
코드
 <form action="index.jsp" method="post" onsubmit="submitTest();">

... 로 바꾸다
코드
 <form action="index.jsp" method="post" onsubmit="return submitTest();">

 
무엇 때문에?
원래onsubmit 속성은
이라는 html 대상의 방법명과 같았는데 그 값(문자열)은 그 방법체이고 기본적으로true로 되돌아온다.
자바와 마찬가지로, 이 방법체에는 내장 함수와 사용자 정의 함수를 포함한 임의의 문장을 쓸 수 있다.
코드
 onsubmit="

    alert('haha'); //     

    submitTest();  //      

    alert(this.tagName); //    this   

    ......(      )

    return false;

"

... 에 상당하다
코드
 Form.prototype.onsubmit = function() {

    alert('haha'); //     

    submitTest();  //      

    alert(this.tagName); //    this   

    ......(      )

    return false;

};

그러면 기본 방법을 덮어쓰기 (override) 합니다. (기본값은true로 되돌아갑니다.)
여러분은 방법체에서this라는 키워드를 사용할 수 있음을 알아차렸습니다. 이것은 바로 의 대상 실례를 대표합니다.
 
이러한 분석을 통해 이러한 상황은 이해하기 어렵지 않다.
코드
 <form action="index.jsp" method="post" onsubmit="submitTest();">

이렇게 쓰면 override 방법의 효과는 다음과 같다.
코드
 Form.prototype.onsubmit = function() {

    submitTest();

};

여기서submitTest () 는false를 되돌려주지만, 이 함수만 실행하고 결과를 처리하지 않았습니다.그러나
코드
 <form action="index.jsp" method="post" onsubmit="return submitTest();">

override 메서드의 효과는 다음과 같습니다.
코드
 Form.prototype.onsubmit = function() {

    return submitTest();

};

이렇게 해서 우리는 그것의 반환치를 이용하여 예상한 효과에 도달했다. 
이렇게 이해하면 훨씬 인상이 깊어질 것 같아서 틀리기 쉽지 않을 것 같아요.
 
결론: 우리는 자바의 사고방식으로 자바스크립트의 유사한 상황을 모의할 수 있다(자바스크립트에서prototype을 바탕으로 하는 대상을 대상으로 하는 기술도 확실히 이렇다). 그러나 그들은 본질적인 차이가 있다. 예를 들어 자바는 강한 유형이고 엄격한 문법적 제한이 있으며 자바스크립트는 느슨한 것이다.다음과 같이 하십시오.
코드
Form.prototype.onsubmit = function() {

};

되돌아오는 값이 있을 수도 있고, 되돌아오는 값이 없을 수도 있다. 자바에서는 통하지 않는다. 자바에서는 방법의 되돌아오는 값에 따라 다시 불러올 수 없기 때문에 (overload) 방법이 다르고, 자바스크립트의 다시 불러오는 방법이 훨씬 느슨하다.

좋은 웹페이지 즐겨찾기