[英]Set input value to get variable
我有两个 web 页面。
这包含一个表格
<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 $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.