0

我使用 /=on/g 全局值解决了这个问题,它在那里工作......感谢您的帮助^_^ 任何其他建议表示赞赏!:D


我目前很难弄清楚在我的表单输出后将formdata.Replace所有=on标签放在哪里。

我有多个复选框,提交的复选框转到下一页并显示所有输入的数据。但是,它还保留了=onjavascript 中的标签,我只能弄清楚如何删除其中一个。我假设我需要在某处输入另一个循环,但我对如何做到这一点感到困惑,因为他们可以一次选择未知数量的复选框(此输出正在多个页面上使用,并且有不同的数字每页的复选框)。

这是我找到的原始脚本:

<script type="text/javascript">
<!-- HIDE FROM INCOMPATIBLE BROWSERS
if (window != top)
 top.location.href=location.href
document.write("<h1>Your form has been submitted!</h1><h2>You entered the following data:</h2>");

var formData = location.search;
formData = formData.substring(1, formData.length);

while (formData.indexOf("+") != -1) {
 formData = formData.replace("+", " ");
}

formData = unescape(formData);
var formArray = formData.split("&");

for (var i=0; i < formArray.length; ++i) {
 document.writeln(formArray[i] + "<br />");
}

// STOP HIDING FROM INCOMPATIBLE BROWSERS -->
</script>

formData = formData.replace("=on", " ");在 while 循环中添加了,它删除了第一个,但没有删除其他任何一个。但是,我不知道该把它放在哪里。

4

1 回答 1

0

您需要小心处理该代码,除非您不希望用户生成输入,因为您最终可能会替换一些您不想要的内容。有一些 JS 库会以一种您可能想要研究的更安全的方式为您提取提交的值。

您遇到的问题是它只会"=on"替换"+"" ". 如果您添加一个额外的 while 循环,您可以替换"=on"它们直到它们全部消失。

while (formData.indexOf("+") != -1) {
 formData = formData.replace("+", " ");
}

while (formData.indexOf("=on") != -1) {
 formData = formData.replace("=on", "");
}
于 2013-06-21T17:49:31.187 回答