2011-01-19 8 views
1

私は単純なフォームを同じページに提出しようとしていましたが、提出されると同じページでPHP関数が呼び出されます。しかし、私は提出する前にいくつかのJavaScriptの検証をしようとしていた。ですから、フォームタグのonSubmit呼び出しjs関数とボタンonClick呼び出しjs関数の使用の違いを知りたいのですが、これは私が現在行っていることです。Javascriptのバリデーション

<?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

フォームのonsubmitにJavaScriptを追加するか、送信ボタンのonclickを追加するかにかかわらず、フォームは依然として送信ボタンによって送信されます。つまり、リクエストがサーバーに返され、$ _POST ['submit']が設定されます。その変数が設定されているので、関数が呼び出されていることがわかります。

+0

オハイオ州オクラホマ..非常に参考になりました。そう、すべてのJsバリデーションは、フォームタグで送信する必要があります。少なくとも私が推測する時間のほとんどは... – Vinay

+0

それは私の意見では好ましいでしょう。 –

+0

実際は正しくありません。 onClickがFalseを返した場合、送信は行われません。 –

2

これは、あなたがonclickイベントにthisを渡しているためです。この例では、thisは、関数が要求するフォームではなく、送信ボタンを参照しています。

したがって、form.inputboxname.valueは、 '(空文字列)でないundefinedを返します。したがって、testResults関数はtrueを返します。したがって、送信が有効になります。

1

差はthisです。 thisonClickの別のオブジェクトを指し、onSubmitよりも大きいです。あなたの関数はフォームが渡されることを期待していますが、onClickを使うときはsubmitボタンを押します。 2番目の方法が期待通りに機能しないのはこのためです。

+0

Oh Ok ..おかげさまで非常に参考になりました.JSバリデーションはフォームタグで送信する必要があります。少なくとも私が推測する時間のほとんどは... – Vinay

+0

これは一般的に推奨されますが必ずしもそうとは限りませんクリックされたボタンに応じてケースが検証されるフォームの異なる部分を必要とするか、あるいは全く検証されないことがあります。 –

関連する問題