【问题标题】:Set input value to get variable设置输入值以获取变量
【发布时间】:2020-08-20 11:39:28
【问题描述】:

我有两个网页。

index.php

这包含一个表单

<form id="searchForm" class="" action="search.php" method="get" style="position:absolute; top:150pt; left:10pt; font-size:17pt;">
  <label for="">Postcode</label>
  <input type="text" id="postcode" name="postcode" value="" placeholder="AB12 3CD" oninput="checkPostcode()">
  <!-- function isValidPostcode(p) {
        var postcodeRegEx = /[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i;
        return postcodeRegEx.test(p);
    } -->
  <br>
  <label for="">Type of Course</label>
  <select class="" name="coursetype">
    <option value="" disabled selected></option>
    <option value="online">Online</option>
    <option value="">In Person</option>
  </select>
  <br>

  <input type="submit" value="Search">
</form>

当表单在 search.php 中提交动作时

search.php

这显示与上一页输入的数据相同的表单

<?PHP $postcode = $_GET['postcode'];?>
    <form class="" action="search.php" method="get">
    Postcode <input type="text" name="postcode" value="
    <?php
    $postcode = str_replace('%20', ' ', $postcode);
    $postcode = str_replace('-', ' ', $postcode);
    $postcode = str_replace('%09', '', $postcode); // This line was added to try to remove 
    the tabs
    echo $postcode;
    ?>
    ">

    Tags


    <select id="tagsInput" class="js-example-basic-hide-search-multi" name="specialities[]" 
    multiple="multiple" onkeyup="filterTags()">
        <option value="AL">Lorem</option>
        <option value="WY">ipsum</option>
    </select>

    <script>
    $(document).ready(function() {
        $('.js-example-basic-hide-search-multi').select2({language: "en"});
    })
    </script>
    <script>
    function filterTags() {
        var input, filter, table, tr, td, i, txtValue;
        input = document.getElementById("tagsInput");
        filter = input.value.toUpperCase();
        table = document.getElementById("searchTable");
        tr = table.getElementsByTagName("tr");
        for (i = 0; i < tr.length; i++) {
            td = tr[i].getElementsByTagName("td")[2];
            if (td) {
                txtValue = td.textContent || td.innerText;
                if (txtValue.toUpperCase().indexOf(filter) > -1) {
                    tr[i].style.display = "";
                } else {
                    tr[i].style.display = "none";
                }
            }
        }
    }
    </script>
    <input type="submit" value="Submit">
</form>

但是,当输入显示在 search.php 中时,输入的两侧都有两个选项卡。

我该如何摆脱它?

【问题讨论】:

  • value="YOUR CONTENT HERE" 的开头引号之后开始您的内容。没有换行符

标签: javascript php html web input


【解决方案1】:

很有趣,您收到该错误是因为您使用的是 PHP。

Postcode <input type="text" name="postcode" value="
<?php
$postcode = str_replace('%20', ' ', $postcode);
$postcode = str_replace('-', ' ', $postcode);
$postcode = str_replace('%09', '', $postcode); // This line was added to try to remove 
the tabs
echo $postcode;
?>
">

注意您是如何拥有value=" 的,然后在下一行开始&lt;?php。两者之间的空白是造成您差距的原因。只需将这两个粉碎在一起,它就会消失:

Postcode <input type="text" name="postcode" value="<?php
$postcode = str_replace('%20', ' ', $postcode);
$postcode = str_replace('-', ' ', $postcode);
$postcode = str_replace('%09', '', $postcode); // This line was added to try to remove 
the tabs
echo $postcode;
?>">

呈现页面时,HTML 会自动将多个空格合并为一个,但它会保留一个,这就是您所看到的。

我没有看到你最终会得到额外空格的地方,但抛出 trim() 不会有什么坏处:

Postcode <input type="text" name="postcode" value="
<?php
$postcode = str_replace('%20', ' ', $postcode);
$postcode = str_replace('-', ' ', $postcode);
$postcode = trim($postcode);
echo $postcode;
?>
">

trim() 将修剪字符串开头和结尾的所有空格(以防用户不小心添加了一些或某些内容)。

【讨论】:

    【解决方案2】:

    问题在于这部分代码中的换行符。

    Postcode <input type="text" name="postcode" value="
        <?php
        $postcode = str_replace('%20', ' ', $postcode);
        $postcode = str_replace('-', ' ', $postcode);
        $postcode = str_replace('%09', '', $postcode);
        echo $postcode;
        ?>
    ">
    

    要解决此问题,请将str_replace 行放在HTML 之前删除所有换行符

    $postcode = str_replace('%20', ' ', $postcode);
    $postcode = str_replace('-', ' ', $postcode);
    $postcode = str_replace('%09', '', $postcode);
    
    Postcode <input type="text" name="postcode" value="<?php echo $postcode ?>">
    

    我还建议将您所有的 POST 数据验证放在 HTML 之前,这样做可以让您的代码看起来更干净。

    【讨论】:

      【解决方案3】:

      这将在两边插入\n

      Postcode <input type="text" name="postcode" value="
          <?php ...?>
          ">
      

      这不会:

      Postcode <input type="text" name="postcode" value="<?php 
      ...
      ?>">
      

      为了确保你能做到这一点

      Postcode <input type="text" name="postcode" 
      value="<?=trim(str_replace('-', ' ', $postcode))?>">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多