社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Jquery

选择PHP/jQuery国家/州表单字段

James • 3 年前 • 1119 次点击  

我编写了一个地址表单,它使用API将国家拉入一个select输入,然后jQuery/ajax将相关的州/地区填充到另一个select输入。除了一些国家没有可供使用的州/地区(Å陆地岛屿)外,这种方法也适用。在这些情况下,我被迫包含一个“其他状态”字段,所以我用文本输入替换它。

我的问题是当我选择不同的国家时;如果我选择了一个没有州/地区的国家,它会切换到文本输入,但一旦我选择了另一个国家,它就不会切换回来。

jQuery:

$("#inputCountry").on('change', function () {
    $.getJSON("ajax/changecountry?country=" + $(this).val(), function (data) {
    })
    .then(function (data) {
        var string = '';
        $.each(data, function (i, o) {
            string += '<option value="' + i + '">' + i + '</option>';
        });
        if (string !== '') {
            $('#inputState').html(string);
        } else {
            $('#inputState').replaceWith('<input id="inputOtherstate" placeholder="State or Region" type="text" class="form-control" name="other-state" />');
        }
    })
    .then(function () {
        $('#inputState').val($('#userstate').val()); 
    });
}).change();

领域:

<div class="col-md-3">
    <label for="inputCountry" class="form-label">Country</label>
    <select class="form-select" aria-label="Address Country" id="inputCountry" name="country">
        <?php
         foreach ($countries as $name => $code) {
            echo ($code==='US') ? '<option value="' . $code . '" selected>' . $name . '</option>' : '<option value="' . $code . '">' . $name . '</option>';
        }
        ?>
    </select>
</div>
<div class="col-md-3">
    <label for="inputState" class="form-label">State</label>
    <select class="form-select" aria-label="Default select example" id="inputState" name="state">
        <option selected>Select a country...</option>
    </select>
    <input type="hidden" id="userstate" value="<?= isset($user['state']) ? $user['state'] : '' ?>" />
</div>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129364
 
1119 次点击  
文章 [ 1 ]  |  最新文章 3 年前
David
Reply   •   1 楼
David    3 年前

你可以替换 <select> 带着 <input> ,但你永远都无法取代 <输入> 用一个 <选择> .我想你可以在 if 阻止你的病情:

if (string !== '') {
    $('#inputState').replaceWith('<select class="form-select" aria-label="Default select example" id="inputState" name="state">' + string + '</select>');
} else {
    $('#inputState').replaceWith('<input id="inputOtherstate" placeholder="State or Region" type="text" class="form-control" name="other-state" />');
}

另一种选择是,两个表单元素都存在,但有一个隐藏。那你就可以 .show() .hide() 然后根据需要形成元素,而不是完全替换它们。如果将事件处理程序附加到它们上,这将特别有用,因为替换它们将摆脱那些事件处理程序。