【发布时间】:2023-03-25 18:18:01
【问题描述】:
我正在使用 formmail.php 中的一项功能,该功能允许我使用隐藏输入来重命名用户上传的文件。这样我可以保留真实公司名称的值,同时从组合文件名中删除非法字符。
我编写了一个函数,它可以进行正确的替换并将新值分配给一个字符串变量,这样我就可以在隐藏的输入中使用。像这样:
<input type="text" id="CompanyName" name="CompanyName" size="60" maxlength="40" onchange="clean(this.value)" required>
<script type="text/javascript">
cleanName = ""; // variable outside the function meant to be Global
function clean()
{
cleanName = document.getElementById("CompanyName").value.replace(/[/\\/'"*&%$]/g, "");
}
</script>
不过,当我尝试使用“cleanName”变量时,它的值显示为空:
<input type="hidden" name="file_names" value="Proof=State.%2D%.cleanName.%'-Paymnt'%.%2D%.Proof" />
文件上传为“NY--Paymnt-FileName.pdf”。
我怎样才能做到这一点?
【问题讨论】:
-
您究竟想在哪里使用
cleanName变量?作为隐藏输入的值? -
正如我上面引用的,在隐藏的输入中:'' 如果我使用原始公司名称,这可以正常工作,如下所示:
<input type="hidden" name="file_names" value="Proof=State.%2D%.CompanyName.%'-Paymnt'%.%2D%.Proof /> -
您的
value属性上缺少关闭双引号"。不确定这是否会影响您的结果。下面的 trincots 答案肯定会满足您的需求。 -
打错了,抱歉。
标签: javascript forms variables illegal-characters formmail