【问题标题】:Unable to Load Dependent on Multi-Select using PHP and jQuery无法使用 PHP 和 jQuery 加载依赖于多选
【发布时间】:2019-09-10 03:15:26
【问题描述】:

我尝试加载多个选定国家/地区的州列表,当我在这里尝试表单时它起作用了https://phppot.com/php/load-dependent-dropdown-on-multi-select-using-php-and-jquery/

我试图通过将<select> 替换为<input type="checkbox"> 来做一些小改动

但它不加载任何状态列表,我在控制台中收到错误

 index.php:36 Uncaught TypeError: Cannot read property 'length' of null
at getState (index.php:36)
at HTMLInputElement.onchange (index.php:64)
 getState @ index.php:36
 onchange @ index.php:64

这是我尝试过的:

<div class="row">
  <label>Country:</label><br /> 
     <?php
         foreach ($countryResult as $country) {
     ?>
          <div class="form-check">
                        <input class="form-check-input" type="checkbox" name="country[]" id="<?php echo $country["id"]; ?>" onChange="getState();" value="<?php echo $country["id"]; ?>">
                        <label class="form-check-label" for="<?php echo $country["id"]; ?>">
                            <?php echo $country["country_name"]; ?>
                        </label>
                    </div>
                    <?php
                }
                ?>
        </div>
        <div class="row">
            <label>State:</label>
            <select name="state[]" id="state-list" class="demoInputBox" multiple size=5>
                <option value="">Select State</option>
            </select>
        </div>

脚本

function getState() {
            var str = '';
            var val = document.getElementById('country-list');
            for (i = 0; i < val.length; i++) {
                if (val[i].selected) {
                    str += val[i].value + ',';
                }
            }
            var str = str.slice(0, str.length - 1);

            $.ajax({
                type: "GET",
                url: "get_state.php",
                data: 'country_id=' + str,
                success: function (data) {
                    $("#state-list").html(data);
                }
            });
        }

GET_STATE.PHP

<?php
  require_once("DBController.php");
  $db_handle = new DBController();
   if(!empty($_GET['country_id'])) {
    $coun_id = $_GET["country_id"];           
    $query ="SELECT * FROM states WHERE countryID IN ($coun_id)";
  $results = $db_handle->runQuery($query);
  ?>
    <option value="">Select State</option>
 <?php
    foreach($results as $state) {
 ?>
    <option value="<?php echo $state["id"]; ?>"><?php echo $state["name"]; ?></option>
<?php
 }
}
?>

如何使用复选框而不是 &lt;select&gt; 加载数据

【问题讨论】:

  • 您的国家/地区列表 ID 在哪里以及为什么在输入类型复选框中使用两个值
  • @NurbekBoymurodov 检查我的问题我做了更改
  • 你的身份证在哪里,哪个国家/地区列表
  • 你正在写 id country id
  • @NurbekBoymurodov 你能帮我解决这个问题吗,如果它是一个&lt;select&gt;,我可以指向特定的ID,但是我该如何处理checkbox,因为复选框有它自己独特的@987654332 @

标签: php jquery


【解决方案1】:

试试这个也许对你有帮助

<div class="row">
  <label>Country:</label><br /> 
     <?php
         foreach ($countryResult as $country) {
     ?>
          <div class="form-check">
                        <input class="form-check-input country-list" type="checkbox" name="country[]"  onChange="getState();" value="<?php echo $country["id"]; ?>">
                        <label class="form-check-label" for="<?php echo $country["id"]; ?>">
                            <?php echo $country["country_name"]; ?>
                        </label>
                    </div>
                    <?php
                }
                ?>
        </div>
        <div class="row">
            <label>State:</label>
            <select name="state[]" id="state-list" class="demoInputBox" multiple size=5>
                <option value="">Select State</option>
            </select>
        </div>

脚本

function getState() {
            var str = '';
            var val = document.getElementsByClassName('country-list');
            for (i = 0; i < val.length; i++) {
                if (val[i].checked) {
                    str += val[i].value + ',';
                }
            }
            var str = str.slice(0, str.length - 1);

            $.ajax({
                type: "GET",
                url: "get_state.php",
                data: 'country_id=' + str,
                success: function (data) {
                    $("#state-list").html(data);
                }
            });
        }

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-02-09
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
  • 2015-10-29
  • 1970-01-01
相关资源
最近更新 更多