1

私は JavaScript に非常に慣れていないので、必要なクラスを切り替えて、チェックボックスがマークされた後にフィールドに情報を入力する必要があるフォームを作成しようとしています。2 日間試しましたが、[体育館] ボックスがオンになっている場合、[開始日] を必須フィールドにすることができません。どんな助けでも素晴らしいでしょう。

これが私がこれまでに持っているものです:

    <!DOCTYPE html>
    <html>
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
    <script type="text/javascript">    

    $(document).ready(function(){
        $("#gym").change(function(){              
            $("#togg1").toggle(this.checked);
            $("#startDate").toggleClass("required");
            $("#endDate").toggleClass("required");
            $("#startTime").toggleClass("required");
            $("#endTime").toggleClass("required");

    if(this.checked){
           $("#startDate").attr('required','required');
           $("#endDate").attr('required','required');
           $("#startTime").attr('required','required');
           $("#endTime").attr('required','required');
      }
      else{
           $("#startDate").removeAttr('required')
           $("#endDate").removeAttr('required')
           $("#startTime").removeAttr('required')
           $("#endTime").removeAttr('required')
      }

        });
    });

    </script>


    </head>
    <body>


    <div id="courseForm" style="width: 500px; border: 1px solid #000; padding: 50px 0 50px 50px;margin: 0 auto;">
    <form id="serviceForm" action="#" onSubmit="required(this);" method="POST" enctype="text/plain">
    <input name="orgid" type="hidden" value="000001" />
    <input name="retURL" type="hidden" value="#" />
    <label for="company">* Agency Requesting Facility:</label>
    <br />
    <input id="company" required="required" maxlength="50" name="company" size="50" type="text" />
    <br />
    <br />
    <label for="name">* Agency Contact:</label>
    <br />
    <input id="name" required="required" maxlength="50" name="name" size="50" type="text" />
    <br />
    <br />
    <label for="phone">* Contact Phone Number:</label>
    <br />
    <input id="phone" required="required" maxlength="14" name="phone" size="14" type="text" />
    <br />
    <br />
    <br />Courses offered
    <br />

<input id="gym" name="gym" type="checkbox" value="1" />Gymnasium
    <br />
    <span id="togg1" style="display:none">
            <span id="togg2" style="display:inline">
                <lable for="startDate">* Start Date:</lable>
                    <input id="startDate" maxlength="10" name="startDate" size="10" />
            </span>
            <span id="togg2" style="display:inline">
                <lable for="endDate">* End Date:</lable>
                    <input id="endDate" maxlength="10" name="endDate" size="10" /><br /><br />
            </span>
            <span id="togg2" style="display:inline">
                <lable for="startTime">* Start Time:</lable>
                    <input for="startTime" maxlength="7" name="startTime" size="7" />
            </span>
            <span id="togg2" style="display:inline">
                <lable for="endTime">* End Time:</lable>
                    <input for="endTime" maxlength="7" mane="endTime" size="7" /><br />
            </span>
    </span>

    <br />
    <br />
    <label for="description">Comments:</label>
    <br />
    <textarea name="description" cols="40" rows="5"></textarea>
    <br />
    <br />* denotes required fields
    <br />
    <input type="submit" name="submit" id="submit" value="SUBMIT" />
</form>
</div>
</body>
</html>
4

2 に答える 2

0

「onSubmit」で「required」関数を呼び出します。「必要な」関数が存在しないため、これは必要ではなく、間違っています。

次に、次の行を追加する必要があります。

$("#serviceForm").validate();

「$(document).ready」呼び出しで、DOM がロードされた後に実行されるようにします。

これがどのように機能するかの例を次に示します。

http://jsfiddle.net/4rscN/

次のプラグインを使用すると仮定しました: http://docs.jquery.com/Plugins/Validation

そうでない場合は、追加する必要があります。

検証プラグインの場合、必要な属性ではなく、必要なクラスを使用する必要があると思います。class required と属性 required を混在させています。これは HTML5 で使用できる属性ですが、すべてのブラウザがサポートしているわけではないことを常に考慮してください。

これについての良い参考資料として:

http://caniuse.com/#search=必須

于 2013-03-29T19:21:50.667 に答える
0

「開始日」に「必須」属性を追加するのを忘れています

$(document).ready(function(){
   $("#gym").change(function(){              
      $("#togg1").toggle(this.checked);
      $("#startDate").toggleClass("required");

      if(this.checked){
           $("#startDate").attr('required','required');
      }else{
           $("#startDate").removeAttr('required')
      }

   });
});
于 2013-03-29T19:21:57.190 に答える