javascript - 从下拉框中获取选定的值并用于填充文本框 php javascript

标签 javascript php jquery

我正在根据更改的列表框填充文本框中的值

我的代码正在运行......并且也可以正确获取数据......

但是这是基于 id 的。

我需要根据城市名称选择数据。

下面是我的代码

<?php
require_once('includes/config.php');
?>

<?php
$result1 = $database->getRows("SELECT * from areamaster");
?>
<html>
<head>

<script type="text/javascript">
    var compInfoArray = [
        <?php                       
           foreach($result1 as $row1){ 

                echo 'id : ' . $row1['id'] . ',';
                echo 'cityname :  "'.$row1['cityname'].'",';
                echo 'area : "'.$row1['area'].'"';
            }
        ?>
    ];

    function showname() {
  var id = document.form1.id.value;
  var index = compInfoArray.contains(id);
  document.form1.cityname.value = compInfoArray[index]["cityname"];
  document.form1.area.value = compInfoArray[index]["area"];
}

window.onload = function() {
  showname();
}


Array.prototype.contains = function(needle) {
  for (var i in this) {
    for (var key in this[i]) {
      if (this[i][key] == needle) {
        return i;
      }
    }
  }
  return false;
}
</script>

  </head>
</head>
<body>
<form name="form1">
  <select name="id" onChange="showname()">
<?php foreach($result1 as $row1){   ?>  
    <option  value="<?php echo $row1["cityname"]; ?>"><?php echo $row1["cityname"]; ?></option>
    <?php }?>       
  </select>
  <label>
    <input type="text" name="cityname" value="" />
    <input type="text" name="area" value="" />
  </label>

</form>
</body>
    </html>

最佳答案

我尝试用简约的 .html 重现您的案例:

<form name="form1">  

    <select name="id" onChange="showname()">

       <option  value="Paris">Paris</option>
       <option  value="London">London</option>
       <option  value="Berlin">Berlin</option>          

    </select>
    <label>
        <input type="text" name="cityname" value="" />
        <input type="text" name="area" value="" />
    </label>

</form>

如果我没理解错的话,这就是你得到的 html。

接下来,我以稍微不同的方式重建了你的 js 数组:

var compInfoArray = [
    {
        "id" : 5,
        "cityname" : "Paris",
        "area" : "FR"
    },
    {
        "id" : 8,
        "cityname" : "London",
        "area" : "UK"
    },
    {
        "id" : 12,
        "cityname" : "Berlin",
        "area" : "GER"
    }
];

然后我编写了一个原型(prototype),它将在任何子数组键中查找值:

Array.prototype.contains = function (needle) 
{
   for (var i in this) 
   {
       for(var key in this[i]) 
       {
            if(this[i][key] == needle )
            {
                return i;
            }
        }
   }
   return false;
}

最后是你的 showname() 函数:

function showname() 
{
    var id = document.form1.id.value;
    var index = compInfoArray.contains(id);
    document.form1.cityname.value = compInfoArray[index]["cityname"];
    document.form1.area.value = compInfoArray[index]["area"];
}

工作片段:

var compInfoArray = [{
  "id": 5,
  "cityname": "Paris",
  "area": "FR"
}, {
  "id": 8,
  "cityname": "London",
  "area": "UK"
}, {
  "id": 12,
  "cityname": "Berlin",
  "area": "GER"
}];



function showname() {
  var id = document.form1.id.value;
  var index = compInfoArray.contains(id);
  document.form1.cityname.value = compInfoArray[index]["cityname"];
  document.form1.area.value = compInfoArray[index]["area"];
}

window.onload = function() {
  showname();
}


Array.prototype.contains = function(needle) {
  for (var i in this) {
    for (var key in this[i]) {
      if (this[i][key] == needle) {
        return i;
      }
    }
  }
  return false;
}
<form name="form1">
  <select name="id" onChange="showname()">

    <option value="Paris">Paris</option>
    <option value="London">London</option>
    <option value="Berlin">Berlin</option>

  </select>
  <label>
    <input type="text" name="cityname" value="" />
    <input type="text" name="area" value="" />
  </label>

</form>

编辑:这就是您可能必须使用查询结果构建数组的方式:

var compInfoArray = [

        <?php                       
            foreach($result1 as $row1)
            { 
                echo '{';
                echo 'id : ' . $row1['id'] . ',';
                echo 'cityname :  "'.$row1['cityname'].'",';
                echo 'area : "'.$row1['area'].'"';
                echo '},';
            }
        ?>
    ];

关于javascript - 从下拉框中获取选定的值并用于填充文本框 php javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28644719/

相关文章:

javascript - 同时打印出所有子级的所有事件和事件处理程序

javascript - 苹果脚本 : Javascript to click in safari with unknown id

php - 在 WordPress 中循环自定义帖子类型的特定类别

php - 如何使用 MySQL 和 PHP 更新两个表?

javascript - jQuery:html() 在事件中不可用?

JavaScript/jQuery 隐藏表单部分,直到上一个完成

javascript - 从字符串中去除括号和单词 "The"

php - 内爆 2 个独立的阵列?

javascript - 在knockout JS中绑定(bind)复杂模型

javascript - jstree 检测多个项目被移动