【问题标题】:Submit form in classic ASP / VB Script以经典的 ASP / VB 脚本提交表单
【发布时间】:2017-12-26 19:38:20
【问题描述】:

有一个经典的 ASP,当单击提交按钮时,它会调用 Java Script 函数。该脚本包含一个文本框的验证:frmCode,当此验证通过或文本框为空时,我要提交表单。

但是,设置 frm = window.document.forms(0) 会引发错误,显示 "800a01a8|Object_required:_''" 我也试过frm = window.document.forms("form1"),但也没有用。

任何建议将不胜感激。提前谢谢你。

<form Method="post" Action="Test.asp" onSubmit="return OKToSubmit()" id="form1" name="form1" target=_blank>
.....
..... more lines..
.....
<input type="text" id="frmCode" name="frmCode"
style="WIDTH: 248px; HEIGHT: 24px" size=1 maxlength="115">
.....
..... more lines..
.....
<input Type="button" Value="Submit" onClick="OKToSubmit()" id="btnSubmit" name="btnSubmitn">
.....
..... more lines..
.....
<SCRIPT ID=clientEventHandlersVBS type="text/Javascript">
function OKToSubmit(){
var availableCode = new Array();
<%
    Dim frm 'reference to form
    Set frm = window.document.forms(0)

    idx = 0
    for idx = 0 to UBound(codeList)-1 
%>
    availableCode[<%=idx %>] = unescape('<%= Escape(codeList(idx)) %>');

    <% next %>

    var strCode = document.getElementById('frmCode').value;
    var validationFlag = 0;
    loopValidation:
    for (var i = 0; i < availableCode.length; i++) {
        if (strCode == availableCode[i]){
            validationFlag = 1;
            break loopValidation;
        }
    }
    if (validationFlag == 0 && !(strCode == "")){
        alert("Code does not exist. Please check again.");
        document.getElementById('frmCode').value = "";
        <%
        OKToSubmit = False
        %>
    } else {
        <%
            OKToSubmit = True 
            frm.Submit 
        %>

    }
}

</SCRIPT>

【问题讨论】:

  • 为什么这个问题被否决???
  • 它不起作用,因为 window.document.forms(0) 不是有效的服务器端代码。请记住,在 ASP 中, 标记之间的任何内容都被视为服务器端代码,并在页面呈现给客户端之前进行处理。因此,当页面正在处理服务器端代码时,它不知道 window.document.forms(0) 是什么,因此您收到错误的原因。在我提供解决方案之前,我需要知道什么是 codelist?它是服务器端阵列还是其他什么?
  • @Josh Montgomery 感谢您的回复。 codelist 是从数据库中检索数据的数组。我还在 java 脚本部分( 之外)尝试了 window.document.forms[0],但它也没有工作..
  • 我认为你需要更清楚什么在运行服务器端和什么在运行客户端。正如@Josh Montgomery 所说,您似乎混淆了两者并获得了一些应该在服务器端标签中的客户端的逻辑。

标签: forms vbscript asp-classic submit form-submit


【解决方案1】:

看看这是否能得到你想要的:

function OKToSubmit(){
var availableCode = new Array();
var frm = window.document.forms[0];
<%
    idx = 0
    for idx = 0 to UBound(codeList)-1 
%>
    availableCode[<%=idx %>] = unescape('<%= Escape(codeList(idx)) %>');

    <% next %>

    var strCode = document.getElementById('frmCode').value;
    var validationFlag = 0;
    loopValidation:
    for (var i = 0; i < availableCode.length; i++) {
        if (strCode == availableCode[i]){
            validationFlag = 1;
            break loopValidation;
        }
    }
    if (validationFlag == 0 && !(strCode == "")){
        alert("Code does not exist. Please check again.");
        document.getElementById('frmCode').value = "";
        return false;
    } else {
        frm.submit();
    }
}

【讨论】:

  • 成功了!非常感谢您对我的基本问题的耐心等待。我很困惑在每个服务器和客户端都无法完成什么,但通过这个问题我得到了一个更好的主意。
【解决方案2】:

我将 document.getElementById("form1").submit(); 从服务器端代码移动到 Java Script 部分的客户端代码。然后它现在正在工作。再次感谢您的所有建议。

【讨论】:

    猜你喜欢
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多