0

好的,我会尽可能彻底地描述我的问题。我有 2 个选择框。一个很好。另一个有一个国家列表,根据用户选择的国家,HTML 生成另一个下拉列表(州),其中包含有关该国家的州。如果该国家/地区没有州/省,则只需转到表单的另一部分(另一个 HTML 页面)。那部分(没有州/省)工作正常。我现在设置它的方式,如果用户选择美国,我会得到第三个下拉菜单,其中包含州。然后,如果用户将他们的想法从“美国”改为“英国”,我希望 HTML 生成英国的州/省,而不是美国。现在,它的设置方式是,如果他们改变主意,它提交来自,用户只能从他们改变主意的全国各地的学校中选择。它跳过了州/省部分。我知道这可能会令人困惑,但如果您有任何问题,请随时提出。这是我的 HTML 和 javascript 代码。任何帮助表示赞赏。我知道我可能不应该使用提交方法,但我不知道还有什么方法可以做到这一点。

<form id="form" action="<?= $_SERVER['PHP_SELF'] ?>?S2XEvent=Step1half" method="post">
<table cellpadding="0" cellspacing="0" border="0" width="50%">
<tr>
    <td colspan="2">
        <fieldset class="fs">
            <legend class="blue">General Information</legend>

            <div class="error-msg"><? $this->DisplayValidatorError() ?></div>

            <div id="step_1half">
                <table cellpadding="2" cellspacing="2" border="0" width="100%">
                    <tr> 
                        <td class="form-label-required">Affiliation Type: <span class="asterisk">*</span></td>
                        <td><?= $this->GenHTML_Select('affiliation_type', $aff_type, $affiliation_type, 'form-input-stretched'); ?></td>
                    </tr>
                    <tr> 
                        <td class="form-label-required">Country: <span class="asterisk">*</span></td>
                        <td> 
                            <select  id="country_code" name="country_code" class="form-input-stretched" onchange="refresh()">
                            <? while(list($abbrev, $name) = each($countries)) { ?>
                            <? if($name == 'Common Countries' || $name == 'Alphabetical Listing') { ?>
                            <option value="<?= $abbrev ?>" class="bg"><?= htmlentities( $name ) ?></option>
                            <? } else { ?>        
                            <option <?= ($abbrev == $country_code || ($country_code == '' && trim($abbrev) == 'USA') ) ? 'selected' : '' ?> value="<?= $abbrev ?>"><?= htmlentities( $name ) ?></option>
                            <? } ?>
                            <? } ?> 
                            </select>
                        </td>
                    </tr>
                    <script>
                        function refresh(){
                            window.getSelection($(this).val(), '');                                 
                            $("#form").submit();
                        }                               
                        </script>
                     <?  if ($total > 0){   ?>                                           
                        <tr> 
                        <td class="form-label-required">State: <span class="asterisk">*</span></td>
                        <td> 
                            <select name="state_province_code" class="form-input-stretched">
                                <?= implode('', $states); ?>
                            </select>
                        </td>

                    </tr>
                    <tr> 
                        <td class="form-label">City:</td>
                        <td><input name="city" type="text" class="form-input-stretched" id="city" value="<?= $city ?>" /></td>
                    </tr>
                    <? } else { echo "<meta http-equiv=\"refresh\" content=\"0;URL=https://blahblahblah?S2XEvent=Step2\">";} ?>
                </table>
4

1 回答 1

1

最简单的方法是使用 JavaScript 和 jQuery 之类的工具包。获取必须更改回来的下拉菜单的原始选项并将它们保存在某个变量中。然后,当用户改变主意时,只需使用 jQuery 的 DOM 操作 API 重新插入即可。

于 2013-07-23T17:10:29.457 回答