3

我正在尝试将 Securimage PHP 脚本(cf google)用于验证码,但我遇到了一个问题:当我按下链接“不同图像”(显示另一个验证码)时,我丢失了在字段中输入的所有文本我的 PHP 表单。因此,用户将不得不再次重新输入所有内容,这是有问题的。

这是代码。注意:我去掉了 href 的“#”,因为由于某种原因,它无法更改验证码图像。有谁知道为什么?(这发生在 Safari 和 Firefox 中)

<img id='captcha' src='/myproject/securimage/securimage_show.php' alt='CAPTCHA Image' /><br> <a href='' onclick='document.getElementById('captcha').src =  '/securimage/securimage_show.php?' + Math.random(); return false'> [Different Image ]</a>
4

2 回答 2

1

因为您已从 href 中删除了 '#',这就是为什么单击链接时会刷新整个页面并且所有字段数据都会丢失的原因。不要删除它,然后使用以下代码

<img id='captcha' src='/myproject/securimage/securimage_show.php' alt='CAPTCHA Image' />
<br> 
<a href="#" onclick="document.getElementById('captcha').src =  '/securimage/securimage_show.php?' + Math.random(); return false;"> [Different Image ]</a>
于 2012-06-05T10:41:07.283 回答
1

这不是因为删除了“#”。<a>页面重新加载是因为您在标签中使用了错误的引号。'当对 html 属性以及其中包含的 javascript使用单引号时onclick,浏览器将仅document.getElementById(用于 onclick 事件。return false;不会执行,页面会重新加载。

您可以始终使用"html 属性和'javascript。或者在 attrbiutes 中使用\.

这也可以在没有'#'的情况下工作:

<a href="" onclick="document.getElementById('captcha').src = '/securimage/securimage_show.php?' + Math.random(); return false;"> [Different Image ]</a>

或者它的转义版本:

<a href='' onclick='document.getElementById(\'captcha\').src = \'/securimage/securimage_show.php?\' + Math.random(); return false;'> [Different Image ]</a>
于 2012-06-05T11:18:52.653 回答