0

フォームを検証したいのですが、その時に周囲の div が表示されている場合のみです。これは私がこれまでに持っているものです:

function validateForm()
 {
 var x=document.forms["config"]["itemname5"].value;
if (document.getElementById("customtext").style.display=="block" || x==null)
   {
   alert("Text box must be filled in");
   return false;
   }
 }

HTML スニペット:

<div class="hide" id="customtext">Enter the text you require on the module. eg. "DAVE" max 6 letters<br />
<input type=text name="itemname5"  class="nicebox" value='' maxlength="6" style="font-size:14; font-weight:bold; width:210px; vertical-align:top; height:20px;">
</div>

divが表示されている場合、ユーザーがテキストを入力しておらず、フォームを投稿しないかどうかをユーザーに通知するようにしたいです。

ここにページがあります: http://www.censdigital.com/2012/earplugs-config.html

前もって感謝します!

4

2 に答える 2

0

customText div の親が非表示の場合、ロジックが失敗する可能性があります。このようなケースを処理する必要がある場合は、jquery を使用すると非常に簡単です。

要素が表示されているかどうかを簡単に確認できます

$(x).is(":visible") /*returns true or false*/

編集:

jQuery を使用するには、これをページの head セクションに追加します。この js ファイルをダウンロードして、ローカルでホストすることもできます。

これが追加されたら、要素 x が表示されているかどうかを確認できます

if($(x).is(":visible"))
{
  //your element is visible
}

非常に強力なライブラリである jQuery について詳しく読むことをお勧めします。そして、あなたを大いに助けます。www.jquery.com

于 2013-03-27T14:22:51.727 に答える
0

あなたの if ステートメントは、要素displayプロパティがに設定されて"block"いる場合にのみ考慮され、要素が表示される他の多くの状態があります。このように、非表示になっていないかどうかをテストします

if (document.getElementById("customtext").style.display != "none" && x==""){
   alert("Text box must be filled in"); 
   return false;
}

プロパティが設定されていない場合でも、display設定されていない"block"場合でも、期待される結果が得られます。

フォームがまだ送信されているという問題は、おそらく関数の実行方法に関係しています。関数の呼び出し元を教えてください。return falseフォームの送信を妨げるのではなく、ステートメントが関数を終了しているようです。

于 2013-03-27T14:37:44.707 に答える