繁体   English   中英

设置输入值以获取变量

[英]Set input value to get variable

我有两个 web 页面。

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 中提交操作时

搜索.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 中时,输入的两侧都有两个选项卡。

我该如何摆脱这个?

在此处查看结果的屏幕截图

有趣的是,您收到该错误是因为您使用的是 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=" ,然后在下一行开始<?php 。两者之间的空白是造成差距的原因。只需将这两者粉碎在一起,它应该 go 消失:

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()将修剪字符串开头和结尾的所有空格(以防用户不小心添加了一些或某些内容)。

这将在两边插入 \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))?>">

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

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之前,这样做可以让你的代码看起来更干净。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM