asp(活动服务器页面)回发到表单锚点

asp (active server pages) postback goes to a form anchor

我知道在 2017 年使用 ASP(活动服务器页面)有点老旧,但我的客户网站是在 asp 中构建的,他不想更改它。

他让我做一个你可以在这里看到的表格 http://www.preventys.net/shopquizz.asp

表格效果很好。

我的问题是回发功能。

回发时,我需要 window 转到选中的字段,而不是 return 到页面顶部。 例如,您可以转到表单中的最后一条记录并检查是或否,它将作为回发重新加载,但您将被发送到页面顶部。

这里是完整的代码

<%

Dim header : header = getlang("FDC002")
setsess "currenturl" , "shopquizz.asp"
'
'dim customerid : CustCheckAdmin customerid
'
dim strsubject
dim customeradmin, custid
Dim sAction, dbtable
dim strcomment
dim qID
dim sx
'
dim qc,qrev
'
Dim StrQQ_(17)
Dim StrQR_(17)
Dim StrQL_(17)
'
Dim StrQREV_(17)
Dim StrQREV_VAL_(17)
'
Dim StrQuestionLabel(17)
Dim StrQuestionHelp(17)
Dim StrQtc(17), StrQtc_Total
'
Dim Serror_q(17)
Dim Serror_rev(17)

Dim StrQuizzResult, StrRevQuizzResult, StrTotalPoints
'

sAction = Request("Action")
if saction = "" then 
    sAction = Request("Action.x")
end if
'
Serror = ""
'
' AFFICHAGE DU SITE
ShopPageHeader "ContentPageContact"
'
putMyTitle "Répondez à notre questionnaire pour savoir si votre entreprise est conforme aux lois en vigueur"
'
if sAction = "" then
    DisplayForm
else
    ValidateData()
    if sError = "" then
        Add_Quizz_to_Database
        WriteInfo "<h3>Merci d'avoir répondu au questionnaire.</h3><h3>Vous recevrez dans quelques minutes un diagnostique de conformité de votre établissement.</h3>" , ""
        SendMailTo_Merchant_Customer qid
    else
        shopwriteError SError
        %><br /><%
        DisplayForm
    end if
end if
ShopPageTrailer
'
'*************************************************
'Display Form
'*************************************************
Sub DisplayForm()
        %>

        <form id="Form_ID" name="Form_ID" method="Post" action="<%=getsess("currenturl")%>">
            <table border="1" cellpadding="5" cellspacing="2" class="TableContact">     
                <%
                dim qConn, qDBC, qSql, qRs
                dim counter : counter = 1
                shopopendatabase qdbc
                qSQl="Select * from questionnaire order by qid ASC" 
                Set qrs = qdbc.execute(qsql)
                if not qrs.eof then
                    do while not qrs.eof
                        StrQuestionLabel(counter) = qrs("question_label")
                        StrQuestionHelp(counter) = qrs("question_help")

                        ' questions principales
                    %>
                    <tr>
                        <td align="cennter" valign="middle"><h3><%=qrs("qid")%></h3></td>
                        <td width="15" align="cennter" valign="middle" style="cursor:pointer;" onClick="__TOGGLESHOWHIDE('explain_<%=qrs("qid")%>');"><img title="Cliquez ici pour en savoir plus" src="icons/icon_orders_info.png" width="15" height="15" align="absmiddle" alt="" border="0"></td>
                        <td width="100%">
                            <%= Serror_q(counter)%>
                            <h3><%=StrQuestionLabel(counter)%></h3>
                            <input type="hidden" name="QL_<%=qrs("qid")%>" value="<%=StrQuestionLabel(counter)%>">
                        </td>
                        <td nowrap><input name="q_<%=qrs("qid")%>" type="radio" value="100"     <% if request("q_"& qrs("qid")) = "100" then%> checked <%end if%> onchange="__DOPOSTBACK();">Oui</td>
                        <td nowrap><input name="q_<%=qrs("qid")%>" type="radio" value="-100"    <% if request("q_"& qrs("qid")) = "-100" then%> checked <%end if%> onchange="__DOPOSTBACK();">Non</td>
                        <% 

                        ' personne concernés
                        Select case qrs("qid")
                            case "1","2","3","4","13","15","17" %>
                            <td>Tous concernés <input type="hidden" name="qtc_<%=qrs("qid")%>" value="1"></td>
                            <% case else %>
                            <td nowrap>
                                <select class="selectmultiple" name="qtc_<%=qrs("qid")%>"  onchange="__DOPOSTBACK();">
                                    <option value=''>Concerné ?</option>
                                    <option value="1" <% if request("qtc_"& qrs("qid")) = "1" then response.write "selected"%> >Oui</option>
                                    <option value="0" <% if request("qtc_"& qrs("qid")) = "0" then  response.write "selected"%> >Non</option>
                                </select>
                            </td>
                        <% end select %>
                    </tr>

                    <% 
                        'revision annuelle
                        Select case qrs("qid")
                        case "1","16","15"

                        case else

                        if request("q_"& qrs("qid")) = "100" then %>
                        <tr>
                            <td colspan="2">&nbsp;</td>
                            <td bgcolor="#eaeaea" colspan="4"><%= Serror_rev(counter)%>
                                <font size="2" color=""><b>Revision annuel à jour?</b></font>
                                    <input type="radio" name="qrev_<%=qrs("qid")%>" value="100" <% if request("qrev_"& qrs("qid")) = "100" then%> checked <%end if%> onchange="__DOPOSTBACK();">Oui
                                    &nbsp;
                                    <input type="radio" name="qrev_<%=qrs("qid")%>" value="-100" <% if request("qrev_"& qrs("qid")) = "-100" then%> checked <%end if%> onchange="__DOPOSTBACK();">Non
                                <% end if %>
                            </td>
                        </tr>
                        <% end select %>





                    <tr><td colspan="6"><div id="explain_<%=qrs("qid")%>" style="display:none;"><%=  StrQuestionHelp(counter) %></div></td></tr>

                    <%
                        counter = counter + 1
                    qrs.movenext
                    loop
                end if
                qrs.close
                set qrs=nothing
                shopclosedatabase qdbc
                %>
                </table>

                <table>
                <tr>
                    <td class="ContentContact"><h3>Veuillez recopier le code de sécurité qui s'affiche dans la case ci-contre</h3></td>
                    <td class="ContentContact"><% CreateSecurityImage "securitynumber" %></td>              
                </tr>
            </table>
            <div align="center"><br /><input class="Custsubmitbtn" type="submit" name="action" value="<%=getlang("FDC013")%>"></div>
        </form>
    <br />

    <script language="javascript">    
        var $ = function (_Id){return document.getElementById(_Id);}
        var theForm = document.forms['Form_ID'];    
        if (!theForm) {theForm = document.Form_ID;}

        var __DOPOSTBACK = function(){for (var i=0; i<(arguments.length); i=i+2){$(arguments[i]).value=arguments[i+1];}theForm.submit();}
        var __TOGGLESHOWHIDE = function(_obj){$(_obj).style.display=='none'?$(_obj).style.display='block':$(_obj).style.display='none';}
        var __HIDDENLISTOJECT = function(){
            for (var i=1; i<(arguments.length); i=i+2){$(arguments[i]).checked='';$(arguments[i+1]).style.display='none';}
            for (var i=1; i<(arguments.length); i=i+2){$(arguments[i]).checked='';$(arguments[i]).disabled='disabled';}

            if($(arguments[0]).style.display!='none')
            {
                $(arguments[1]).disabled='';
            }
            }
    </script>
    <%
End Sub

你可以做一个定位卷轴,http://www.the-art-of-web.com/javascript/remove-anchor-links/#another-heading

为单选按钮输入和 Id,并将事件作为参数传递给 onChange 侦听器:

<td nowrap><input name="q_<%=qrs("qid")%>" id="id_<%=qrs("qid")%>" type="radio" value="100"     <% if request("q_"& qrs("qid")) = "100" then%> checked <%end if%> onchange="__DOPOSTBACK(event);">Oui</td>
<td nowrap><input name="q_<%=qrs("qid")%>" id="id_<%=qrs("qid")%>" type="radio" value="-100"    <% if request("q_"& qrs("qid")) = "-100" then%> checked <%end if%> onchange="__DOPOSTBACK(event);">Non</td>

因此,在 onChange 处理程序中,您更改 location.href

var __DOPOSTBACK = 
  function(event){
    var formAction = "preventys.net/shopquizz.asp" + '#' + event.target.id;
    theForm.action = formAction;
    theForm.submit();
}

我认为这对你有用。

您可以使用如下所示的经典 ASP 服务器端函数: