简体   繁体   English

JQuery / Javascript冲突? - 根据选择选项不起作用显示/隐藏div

[英]JQuery/Javascript conflict? - Show/Hide div based on select option not working

I have a booking form that I want to add multiple attendants to based on the number from a select option. 我有一个预订表格,我想根据选择的选项中的号码添加多个服务员。

I've got this working on it's own here - https://jsfiddle.net/dentjames/7buxvd87/1/ 我在这里有自己的工作 - https://jsfiddle.net/dentjames/7buxvd87/1/

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">  

  <script type='text/javascript' src='//code.jquery.com/jquery-1.10.1.js'></script>
<script type='text/javascript'>

jQuery(function () {
    var $blocks = $('.block');
    $('#choices').change(function () {
        $blocks.slice(0, +this.value || 1).show();
        $blocks.slice(+this.value || 1).hide();
    }).change()
})

</script>

</head>
<body>
    <select id="choices">
        <option value="">Please choose number of children</option>
        <option value="1">1 Child</option>
        <option value="2">2 Children</option>
        <option value="3">3 Children</option>
        <option value="4">4 Children</option>
        <option value="5">5 Children</option>
    </select>
    <div id="block-1" class="block">
             <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text"><br><strong>First child</strong></div>
            </td>
        </tr>
          <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* First Name:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cfname" type="text" id="Child First Name" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Surname:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="csname" type="text" id="Child Surname" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Sex:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <select name="csex" size="1" id="Child Sex">
              <option value="Boy">Boy</option>
              <option value="Girl">Girl</option>
            </select>
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Date of Birth:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cdob" type="text" id="Child Date of Birth" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" nowrap class="bodytext1">
                <div align="left" class="text">Age at time of booking:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cage" type="text" id="Child age at time of booking" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Current school:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cschool" type="text" id="Child current school" size="40">
          </font></span>

                </div>
            </td>
        </tr>
    </div>
    <div id="block-2" class="block">
                <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text"><br><strong>Second child</strong></div>
            </td>
        </tr>

             <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* First Name:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cfname" type="text" id="Child First Name" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Surname:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="csname" type="text" id="Child Surname" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Sex:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <select name="csex" size="1" id="Child Sex">
              <option value="Boy">Boy</option>
              <option value="Girl">Girl</option>
            </select>
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Date of Birth:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cdob" type="text" id="Child Date of Birth" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" nowrap class="bodytext1">
                <div align="left" class="text">Age at time of booking:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cage" type="text" id="Child age at time of booking" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Current school:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cschool" type="text" id="Child current school" size="40">
          </font></span>

                </div>
            </td>
        </tr>
    </div>
    <div id="block-3" class="block">
             <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text"><br><strong>Third child</strong></div>
            </td>
        </tr>
                <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* First Name:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cfname" type="text" id="Child First Name" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Surname:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="csname" type="text" id="Child Surname" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Sex:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <select name="csex" size="1" id="Child Sex">
              <option value="Boy">Boy</option>
              <option value="Girl">Girl</option>
            </select>
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Date of Birth:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cdob" type="text" id="Child Date of Birth" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" nowrap class="bodytext1">
                <div align="left" class="text">Age at time of booking:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cage" type="text" id="Child age at time of booking" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Current school:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cschool" type="text" id="Child current school" size="40">
          </font></span>

                </div>
            </td>
        </tr>
    </div>
    <div id="block-4" class="block">
              <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text"><br><strong>Forth child</strong></div>
            </td>
        </tr>
               <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* First Name:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cfname" type="text" id="Child First Name" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Surname:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="csname" type="text" id="Child Surname" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Sex:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <select name="csex" size="1" id="Child Sex">
              <option value="Boy">Boy</option>
              <option value="Girl">Girl</option>
            </select>
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Date of Birth:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cdob" type="text" id="Child Date of Birth" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" nowrap class="bodytext1">
                <div align="left" class="text">Age at time of booking:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cage" type="text" id="Child age at time of booking" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Current school:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cschool" type="text" id="Child current school" size="40">
          </font></span>

                </div>
            </td>
        </tr>
    </div>
    <div id="block-5" class="block">
             <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text"><br><strong>Fifth child</strong></div>
            </td>
        </tr>

                <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* First Name:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cfname" type="text" id="Child First Name" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Surname:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="csname" type="text" id="Child Surname" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Sex:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <select name="csex" size="1" id="Child Sex">
              <option value="Boy">Boy</option>
              <option value="Girl">Girl</option>
            </select>
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">* Date of Birth:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cdob" type="text" id="Child Date of Birth" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" nowrap class="bodytext1">
                <div align="left" class="text">Age at time of booking:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cage" type="text" id="Child age at time of booking" size="40">
          </font></span>

                </div>
            </td>
        </tr>
        <tr valign="baseline">
            <td align="left" class="bodytext1">
                <div align="left" class="text">Current school:</div>
            </td>
            <td colspan="2" align="left">
                <div align="left"> <span class="text"><font color="#FFFFFF">
            <input name="cschool" type="text" id="Child current school" size="40">
          </font></span>

                </div>
            </td>
        </tr>
    </div>

</body>

</html>

But when I incorporate it to the main form, it doesn't work. 但是当我将它合并到主窗体时,它不起作用。 I'm sure there's some conflict with the existing javascript and maybe some issues with the php. 我确定与现有的javascript存在一些冲突,可能还有一些与php有关的问题。

The whole form can be viewed here: http://whizzkidsclub.co.uk/horsham_bookingform_multiple.php 整个表格可以在这里查看: http//whizzkidsclub.co.uk/horsham_bookingform_multiple.php

Any help would be very much appreciated. 任何帮助将非常感谢。

In the url (whizkidsclub...), the div(s) with id block-1, block-2 etc does not contain any element(s). 在url(whizkidsclub ...)中,id为block-1,block-2等的div不包含任何元素。 The controls of first child, second child etc are outside the div(s). 第一个孩子,第二个孩子等的控制在div之外。 在此输入图像描述

Move your controls to the correct div(s) and it should start working 将控件移动到正确的div,它应该开始工作


Edit As Jason pointed out the issue is that div cannot be a direct child of table element. 编辑正如Jason所指出的那样,问题是div不能成为table元素的直接子元素。 So one way to fix this would be to use nested tables. 因此,解决此问题的一种方法是使用嵌套表。 That is change <div id='block-1'> to <table id='block-1'> . 这是将<div id='block-1'>更改为<table id='block-1'> That said I'm sure there must be a better way... 那说我肯定必须有更好的方法......

This fix is demonstrated here . 此修复程序在此处演示。

Your div 's (with the block-* id 's) are getting pulled out of the table by the browser and inserted just before the table . 您的div (带有block-* id )将被浏览器从table拉出并插入到table之前。 They're empty up there. 他们在那里空无一人。 I don't think div 's are allowed as immediate children of a table . 我不认为div可以作为table直接孩子。 Check this out: http://jsfiddle.net/f9t4qqmw/ 看看这个: http//jsfiddle.net/f9t4qqmw/

Source: 资源:

<table>
    <div>
        <tr><td>1234</td></tr>
        <tr><td>abcd</td></tr>
    </div>
</table>

Inspected: 检查:

<div></div>
<table>
    <tbody>
        <tr><td>1234</td></tr>
        <tr><td>abcd</td></tr>
    </tbody>
</table>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM