2017-07-20 51 views
1

有一个经典的ASP,当点击Submit按钮时,它调用Java脚本功能。该脚本包含对文本框的验证:frmCode,当此验证通过或文本框为空时,我想提交表单。以经典的ASP/VB脚本提交表单

然而,设置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> 
+0

为什么这个问题被低估? –

+0

它不工作,因为window.document.forms(0)不是有效的服务器端代码。请记住,在ASP中,<% %>标签之间的任何内容都被视为服务器端代码,并在页面呈现给客户端之前进行处理。所以当页面正在处理服务器端代码时,它不知道window.document.forms(0)是什么,这就是你得到错误的原因。 在我可以提供解决方案之前,我需要知道什么是编码列表?是服务器端数组还是其他? –

+0

@Josh Montgomery感谢您的回复。 codelist是一个从数据库中检索数据的数组。我也试过在java脚本部分(<% %>之外)的window.document.forms [0],但它也没有工作.. – Chrissa

回答

-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(); 
    } 
} 
+0

它工作!非常感谢你对我的基本问题的耐心。我很困惑在每个服务器和客户端无法完成的事情,但是通过这个问题我得到了一个更好的主意。 – Chrissa

-1

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