【问题标题】:I am trying to display data values from txt file based on selection select我正在尝试根据选择选择显示 txt 文件中的数据值
【发布时间】:2020-08-23 09:01:38
【问题描述】:

我正在尝试根据选择选择显示 txt 文件中的数据值

<?php
$lines = file('customers.txt');
?>

<select class="select" style="width: 250px;" name="mylist" id="mylist" required="">
        <option selected="selected" value="">Select Your Company</option>
        <?php foreach($lines as $line){
       $customers = explode(',', $line);
        echo "<option value='".$customers[0]."'>$customers[0] </option>"; }?>
</select>

<input type="text" id="inputid" placeholder="Company Name">

和我尝试的 js

<script>
    $(".select").change(function(){
  var res = $(".select").find(":selected").map(function () {
    if($(this).val()!="")
      return $(this).text();
    else
      return "";
   }).get().join("");
  
   $("#inputid").val(res);

 });
</script>

我的customers.txt 数据文件:-

客户1,街道,分机,邮政编码

客户 2,B 街道,B 分机,B 邮政编码

客户 3,C 街道,C 分机,C 邮政编码

...等

在选择 Customer1 时,我想在 :-

中显示

客户1
一条街
扩展
邮政编码

【问题讨论】:

    标签: javascript php list


    【解决方案1】:

    您需要以某种方式在客户端代码 (js) 中传递您想要的数据。现在您只能将客户名称嵌入到您可以从 js 访问的 html 中(通过选项值)。如果您还想访问剩余数据,则需要传递它。一种解决方案可能是 jquery (https://api.jquery.com/data/) 支持的数据 html 属性 (https://www.w3schools.com/tags/att_data-.asp)。

    <?php
    $lines = file('customers.txt');
    ?>
    
    <select class="select" style="width: 250px;" name="mylist" id="mylist" required="">
            <option selected="selected" value="">Select Your Company</option>
            <?php foreach($lines as $line){
           $customers = explode(',', $line);
            echo '<option value="'.$customers[0].'" data-line="'.$line.'">'.$customers[0].'</option>'; }?>
    </select>
    
    <input type="text" id="inputid" placeholder="Company Name">
    
    <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
    
    <script>
      $("#mylist").change(function(){
          var line = $(this).find('option:selected').data('line');
        $("#inputid").val(line);
      });
    </script>
    

    在这里,我添加了一个名为 line data-line="'.$line.'" 的数据属性,其中包含文件中的整行并将其添加到每个选项标记中。

    然后在 js 中可以读取所选选项的数据属性var line = $(this).find('option:selected').data('line');

    如果您需要对文件中可用的内容进行更多控制,您可以使用文件中的选定列引入多个数据属性,或者将其作为 json 字符串并在 js 中读取您想要的内容。

    【讨论】:

    • Thanx 更少的编码和工作 100% 已经接受 adey_888 但两个代码都相关
    • 我怎样才能有换行符而不是一行中的所有内容并且没有,
    • 您在最后一段中有提示,然后接受的答案更合适。你可以代替这个:data-line="'.$line.'" 这样做:data-line="'.str_replace(',', PHP_EOL, $line).'" 所以用换行符替换逗号。
    【解决方案2】:

    我认为这可能对你有用?

    <?php
    $lines = file('customers.txt');
    ?>
    
    <select class="select" style="width: 250px;" name="mylist" id="mylist" required="">
      <option selected="selected" value="">Select Your Company</option>
    <?php
    foreach ($lines as $line_num => $line) {
      $customers = explode(',', $line);
        echo "  <option value='{$customers[0]}' data-street='{$customers[1]}' data-extension='{$customers[2]}' data-zipcode='{$customers[3]}'>{$customers[0]}</option>";
    }
    ?>
    </select>
    
    <textarea id="inputid" rows="4" cols="50" placeholder="Company Name"></textarea>
    
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha256-4+XzXVhsDmqanXGHaHvgh1gMQKX40OUvDEBTu8JcmNs=" crossorigin="anonymous"></script>
    <script>
    $("#mylist").change(function() {
      var street = $('select option[value=' + this.value + ']').data('street');
      var extension = $('select option[value=' + this.value + ']').data('extension');
      var zipcode = $('select option[value=' + this.value + ']').data('zipcode');
    
      $("#inputid").val(street + '\n' + extension + '\n' + zipcode);
    });
    </script>
    

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 2012-06-13
      • 2015-12-07
      相关资源
      最近更新 更多