绿野仙踪's Archiver

henry 发表于 2008-11-1 19:25

關於leobbs的投票功能

打開userrating.cgi
l/~ LI^k1?n0F
oM4V s&O+t 找到: [quote]<tr><td bgcolor=$miscbackone align=center><font color=$fontcolormisc>投票原因:<br><textarea size=20 name=reason cols=40 rows=5></textarea></td></tr>
9NzuyS5o,U2n5j [/quote] Vx.n/W0^U
DPJ%Q5RB7t d Z&b6k
更改:
[7]0dSSI\,mF [quote]<script>
#h$z\kwto var autoSave = false;l3Bv~.k(h!M
function storeCaret(textEl) {if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();if (autoSave)savePost();}9V3H{ \g4|p
function HighlightAll(theField) {
kI y5m2`p(z var tempval=eval("document."+theField)"SR:NFzym;v:G
tempval.focus() A.~ v qn
tempval.select()
)R/@~Ej!x/X therange=tempval.createTextRange()3|#e$~"p-MnRH
therange.execCommand("Copy")}C(z c {rnD+M
function DoTitle(addTitle) {
/},[&^zW6q var revisedTitle;var currentTitle = document.FORM.reason.value;revisedTitle = addTitle+currentTitle;document.FORM.reason.value=revisedTitle;document.FORM.reason.focus();
y @#bLP return;}
W{2n o m@'u$w </script><form name="FORM">fX WUd&g
<tr><td bgcolor=$miscbackone align=center><font color=$fontcolormisc>投票原因:<select name=font onchange=DoTitle(this.options[this.selectedIndex].value)>
6kfgv${lg <OPTION selected value="">選擇原因</OPTION><OPTION value=迎新積分>迎新積分</OPTION>'}/_ ~ Z0_ RA#s
</SELECT><br>
vs.O`.I$UcX     <textarea  type="text" size=20 name="reason" value="$reason" cols=40 rows=5 ></textarea></td></tr> F%m'E G1Vtr
[/quote]sBWkEf D _0T

8j['r0y*C {y*M8fK3n 但是投票原因的選擇文字不能出現在文字框中, 問題出在那兒??好奇怪r'gr~U5W1Kqy-I\-q

F.yW'R(N4zY8} [[i] 本帖最后由 henry 于 2008-11-1 19:36 编辑 [/i]]

阿喀琉斯 发表于 2008-11-2 08:30

很久没有接触leobbs了,看到你提问,赶紧在自己电脑上把备份论坛运行起来,经过检查发现问题如下:re{lgypb i?
qN p9_D3q
你增加的代码里,有一句[code]<form name="FORM">[/code]这个是多余的。因为再往上面大概十几行的位置,已经有一个FORM标签了:[code]<form action=$thisprog method=POST>[/code][form] 和 [/form] 之间不能再有其他FORM标签,会无效的。
.Fzy,A)p8VOs4P+B qj`
3I0j+P/H1EChwV p#q 所以你要做的,就是把[code]name="FORM"[/code]加入到[code]<form action=$thisprog method=POST>[/code]之中,变成:[code]<form action=$thisprog name="FORM" method=POST>[/code]这样子就可以定义正确的表单名称了。

阿喀琉斯 发表于 2008-11-2 08:37

另外,看得出来,你的代码复制自发帖时选择主题的部分,所以有一部分js代码是多余的,可以删除掉。S`hAo$y3E;cA
将以下代码删除:[code]var autoSave = false;C)U[E5Wo;Y j| Ju
function storeCaret(textEl) {if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();if (autoSave)savePost();}
%z,~+M7}[6AM&V2x function HighlightAll(theField) {
8D*k;C`O7` var tempval=eval("document."+theField)1aX2d,c1U%@
tempval.focus()2e"f e g7r#m
tempval.select()
%r P8|c-o$^c"Y therange=tempval.createTextRange(),p5MlZ}6ksv5K!j
therange.execCommand("Copy")}[/code]只保留:[code]<script>"X,L+N t$mqH-V`
function DoTitle(addTitle) {
QN&m(]k&S$~?J var revisedTitle;var currentTitle = document.FORM.reason.value;revisedTitle = addTitle+currentTitle;document.FORM.reason.value=revisedTitle;document.FORM.reason.focus();^3t^Qs q6pu
return;}
.rHiI:b[ |h </script>[/code]这样子就足够精简了,呵~:Ms U K\x$ZW

,W-Q\;^G'` 告别leobbs多年,想不到还可以帮到你:P

阿喀琉斯 发表于 2008-11-2 08:49

说一下最简洁的写法: h*u,X7Lo*[
T!YvILb)_-K
完全可以把那段script代码删除,直接写成:[code]<select name=font onchange="document.FORM.reason.value=this.options[this.selectedIndex].value;">[/code]这样子最利于观赏,呵呵。你可以试一下效果,略有不同,IE和Firefox下都是正确的。
8Zh+_&is4Ku u&h
Y'p0K+qH 当然,前面定义FORM的步骤不能少哦。

henry 发表于 2008-11-2 18:48

可以了, 我初時把個form action name, 放左上登入投票個action內"S]*Lqi;b
擺了個小烏龍,作弄了自己
HL ou `w'Y D}kn5YJ{W3|
[[i] 本帖最后由 henry 于 2008-11-2 18:53 编辑 [/i]]

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.