2011-10-17 13 views
5

私はすべてのクライアント側フォームの検証を行うためにJavaScriptに依存するフォームを持っています。すべてのフィールドが正しく標準を使用するとして反対に充填されている場合、フォームはJavaScriptを経由して送信されたボタン「送信」:(クライアントはjavascriptを無効にしているJavascriptなしでフォームを送信

<button name="button" type=button onclick="validateReqFields('mForm', 'username, password, compPassword, firstName, lastName');">Register</button> 

document[formName].submit(); 

場合は、フォーム検証の全てが行われているサーバー側をそのそれは本当に問題ではない)。問題は、サブミットの代わりにボタンの種類を持つボタンを使用することにあります。それはjavascriptで完璧に動作しますが、javascriptが利用できない場合、どうすればこの問題を回避できますか?私は、JavaScriptと一緒に送信ボタンを使用する場合は、各ボタンを押してフォームを送信し、正しく動作しません。

+1

' – Pav

+1

私のcを見てください以下の記載を省略する。これはできない。それは明らかにその問題を述べている。 – ryandlf

答えて

2

"ボタン"ボタンの代わりに送信ボタンを使用し、validateReqFields関数がフォームが有効でない場合はfalseを返します。

それから、必要に応じてvalidateReqFieldsからフォームを送信してください。フォームが無効である場合

この方法

  • フォームが有効である場合には、ボタンのクリックは、バブルとフォームが
  • を提出するだろう、そしてJavaScriptのボタンが
  • 場合はをクリックしてキャンセルしますjavascriptが無効になっていると、サーバーにフォールバックとして送信されます
+0

これは完全に機能します。ありがとうございました! – ryandlf

+0

'button'要素を' input [type = submit] 'で置き換えることの利点は何ですか? – alex

+0

@alexフォームはボタン要素に送信されません。 –

4

type属性をsubmitに変更してください。

<button name="button" type="submit" ... /> 
+0

これはできません。なぜなら、ページが送信されないようにJavaScriptを許可していないため、ページが送信されてサーバー側の検証が使用されるため、JavaScriptが役に立たなくなるためです。 – ryandlf

+2

@ryandl: 'event.preventDefault()'を使うべきです。 – alex

+1

説明できないdownvotesのためによろしく: – alex

-2

<noscript></noscript>タグを使用して、JavaScriptが無効のときに「通常の」送信ボタンを定義します。

-1

<noscript>タグを使用して、上記のコードをsubmitとしてボタンタイプでカプセル化することができます。クライアントにjsがある場合、noscript内のコードは無視されます。

+0

JavaScriptが無効になっていて、ページがnoscriptタグを使用している場合、ページに2つのボタンがありませんか? – ryandlf

+1

"noscript"の答えをdownvoteしようとするなら、少なくともなぜそれが役に立たないと思うのかを説明してください。 – alex

関連する問題