2011-01-19 7 views
1

단순한 양식을 같은 페이지에 제출하려고했지만 제출 될 때 동일한 페이지에서 PHP 기능을 호출합니다. 그러나 제출하기 전에 일부 자바 스크립트 유효성 검사를하려고했습니다. 그래서 나는 폼 태그에서 onSubmit 호출 js 함수를 사용하는 것과 button을 사용하여 onClick 호출 js 함수를 사용하는 것의 차이점을 알고 싶다. 이것은 현재 내가하려고하는 것이다.자바 스크립트 유효성 검사

<?php 
    function tobecalled() 
    { 
    echo "This was run"; 
    } 
?> 
<html> 
    <head><title>Testing</title> 
    <script type="text/javascript"> 
    function testResults (form) 
    { 
     var TestVar = form.inputboxname.value; 
     if(TestVar == '') 
     return false; 
     else 
     return true; 
    } 
    </script> 
    </head> 
    <body> 
    <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" onSubmit="return testResults(this);"> 
     <input type="text" name="inputboxname" /> 
     <input type="submit" value="Save" name="submit" /> 
     <?php 
     if(isset($_POST['submit'])) 
     tobecalled(); 
     ?> 
    </form> 
    </body 
</html> 

그것은 작동 ..

하지만 할 경우 (비아 JS 제출)

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST"> 
    ... 
    <input type="submit" value="Save" name="submit" onClick="return testResults(this);"/> 
    ... 

그 여전히 PHP 함수 tobecalled() --Why 호출? 나는 그것을 부르지 않을 것으로 기대하고있다. 어떻게 작동합니까?

+0

코드를 다시 포맷하십시오. –

+0

형식이 잘 지정된 코드와 잘 쓰여진 질문을 통해보다 나은 응답을 얻을 수 있습니다. –

+0

나는 완벽한 작업 코드를 넣었습니다. 폼에서 onSubmit과 버튼으로 onClick을 사용하는 것의 차이점은 무엇입니까? – Vinay

답변

-1

양식을 제출하거나 제출 버튼의 onclick에 자바 스크립트를 추가했는지 여부에 관계없이 양식은 제출 버튼을 통해 제출됩니다. 즉, 요청이 서버로 다시 보내지고 $ _POST [ 'submit']이 설정됩니다. 변수가 설정되었으므로 함수가 호출되는 것을 알 수 있습니다.

+0

오, 알았어. 고맙습니다. 매우 도움이되었습니다. 그래서 모든 Js 유효성 검사는 양식 태그에서 제출해야합니다. 적어도 내가 추정하는 시간은 ... – Vinay

+0

제 의견으로는 바람직 할 것입니다. –

+0

사실 그것은 맞지 않습니다. onClick이 False를 반환하면 제출이 수행되지 않습니다. –

2

당신이 onclick 이벤트에 this을 전달하기 때문에 통과가 허용되는 이유가 있습니다. 이 인스턴스에서는 this이 함수에 필요한 양식이 아닌 제출 버튼을 나타냅니다.

따라서 form.inputboxname.valueundefined이 ''(빈 문자열)이 아니므로 testResults 함수가 true를 반환합니다. 그러면 제출이 활성화됩니다.

1

차이는 this입니다. thisonClick의 다른 객체를 가리키고 onSubmit보다 큽니다. 함수는 양식이 전달 될 것으로 기대하지만 onClick을 사용하면 제출 단추를 제공합니다. 이것이 두 번째 방법이 예상대로 작동하지 않는 이유입니다.

+0

Oh Ok .. 고맙습니다. 매우 도움이되었습니다. 그래서 모든 Js 유효성 검사는 양식 태그에서 제출해야합니다. 적어도 내가 예상하는 시간은 ... – Vinay

+0

일반적으로 추천되지만 항상 그렇지는 않습니다. 클릭되는 버튼에 따라 케이스가 유효성을 검사하거나 다른 방법으로 유효성을 검사하지 않아도됩니다. –

관련 문제