简体   繁体   English

设置输入值以获取变量

[英]Set input value to get variable

I have two web pages.我有两个 web 页面。

index.php index.php

This contains a form这包含一个表格

<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>

when the form has submitted the action in search.php当表单在 search.php 中提交操作时

search.php搜索.php

This shows the same form with the inputted data from the previous page这显示了与上一页输入的数据相同的表单

<?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>

However, when the input is shown in search.php, there are two tabs on either side of the input.但是,当输入显示在 search.php 中时,输入的两侧都有两个选项卡。

How do I get rid of this?我该如何摆脱这个?

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

Funny enough, you are getting that error BECAUSE you are using 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;
?>
">

Notice how you have value=" and then you start the <?php on the next line. That white space between the two is what is causing your gap. Just smash those two together and it should go away:请注意您的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;
?>">

When a page is rendered, HTML will automatically collapse multiple whitespaces into one, but it'll keep one, which is what you're seeing.呈现页面时, HTML 会自动将多个空格合并为一个,但它会保留一个,这就是您所看到的。

I don't see a place where you'd end up with extra whitespace, but throwing on a trim() couldn't hurt:我没有看到你最终会得到额外空格的地方,但是扔在trim()上不会有什么坏处:

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

trim() will trim any whitespace from the beginning and end of the string (just in case the user accidentally added some or something). trim()将修剪字符串开头和结尾的所有空格(以防用户不小心添加了一些或某些内容)。

This will insert \n on both sides这将在两边插入 \n

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

This will not:这不会:

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

And to make sure, you can do this为了确保,你可以做到这一点

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

The problem is the line breaks in this part of your code.问题是这部分代码中的换行符。

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

To solve this, remove all the line breaks by putting the str_replace lines before the HTML为了解决这个问题,通过将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 ?>">

I also recommend putting all your POST data validation before the HTML , doing this keeps your code looking a lot cleaner.我还建议将所有POST数据验证放在HTML之前,这样做可以让你的代码看起来更干净。

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

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