2017-07-20 57 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();從服務器端代碼到客戶端代碼。然後它現在正在工作。再次感謝您的所有建議。