我如何在 HTA 中使用复选框,如果选中它将 运行 vbscript 的一部分?

How do i use a checkbox in HTA to where if checked it will run a section of vbscript?

我想知道是否有人可以帮助我...

我有一段代码,其中我使用 HTA 作为 GUI 来定义所有变量,然后 运行 一些基于 GUI 中提供的答案的子例程。

我已经设法让输入的基于文本的值和 运行 "ValidateSelectionCreateFolders" 子例程。我现在想使用复选框来决定是否 运行 其他子例程,我在下面包含了我的代码示例:

<!DOCTYPE HTML>
<html>
<head>
<title>Market Risk BAU Reporting</title>

<HTA:APPLICATION
APPLICATIONNAME="Market Risk BAU Reporting"
ID="MRiskBAUReport"
VERSION="1.0"
SINGLEINSTANCE="yes"
SCROLL="no"/>


<style type="text/css">
body {
background-color: #DCDCDC;
color: #192272;
font-family: Calibri;
font-size: 12pt;
margin: 4em 3em;
}
</style>
</head>

<script language="VBScript">

Sub ValidateSelectionCreateFolders()
'Other Code Here
End Sub 

Sub ProcessGapRun()
LogFile.WriteLine(Now() & " ProcessGapRunning")
End Sub

Sub RunReportingCycle ()

ValidateSelectionCreateFolders

If ProcessGap.Checked Then
    ProcessGapRun
  Else
    MsgBox "ProcessGap is Unchecked"
  End if

End Sub

<body>
<FORM name="RunSettings">
<p>Staff ID: <input name="StaffID" type="text"></P>
<p>Current Portfolio Date: <input name="InputPortfolio" type="text"></P>
<p>Current Market Date: <input name="InputMarket" type="text"></P>
<p>Previous Portfolio Date: <input name="InputPrevPortfolio" type="text"></P>
<p>2nd Previous Portfolio Date: <input name="InputPrev2Portfolio" type="text"></P>
Which processes do you want to run?
<p>Process Gap Report <input name="ProcessGap" type="checkbox" id="ProcessGap"></P>
<p>Export Gap Report <input name="ExportGap" type="checkbox" id="ExportGap"></P>
<p>Process EuroGap Report <input name="ProcessEURGap" type="checkbox" id="ProcessEURGap"></P>
<p>Export EuroGap Report <input name="ExportEURGap" type="checkbox" id="ExportEURGap"></P>
<p>Process Basis Risk Report <input name="ProcessBasis" type="checkbox" id="ProcessBasis"></P>
<p>Export Basis Risk Report <input name="ExportBasis" type="checkbox" id="ExportBasis"></P>

<input type="button" value="Confirm Above Selection" onclick="RunReportingCycle" /></p>

</body>
</html>

如果我在按下按钮时选中了复选框,我希望它首先 运行 已经工作的代码 'ValidateSelectionCreateFolders' 然后知道复选框已选中,所以 运行 另一个子程序 'ProcessGapRun'。 我真的很感激任何帮助,因为我当前的代码不断下降并出现错误 Object required: 'ProcessGap'

然后我打算添加一些额外的复选框,然后 运行 其他代码,但我希望它单独发生,因为每个复选框都取决于前一个 运行,如何我可以这样做吗?

谢谢

亚当

你几乎成功了。

<script language="VBScript">
Sub ValidateSelectionCreateFolders()
  MsgBox "ValidateSelectionCreateFolders() runs"
End Sub 

Sub ProcessGapRun()
  MsgBox "ProcessGapRun() runs"
End Sub

Sub RunReportingCycle ()
  ValidateSelectionCreateFolders
  If Document.all.ProcessGap.Checked Then
    ProcessGapRun
  Else
    MsgBox "ProcessGap is Unchecked"
  End if
End Sub
</script>

HTML 个具有 ID 的元素在 Document.all 集合中可用。


顺便说一句,您可以在 HTA 中组合 JavaScript 和 VBScript 代码。也许你想用一种更适合网页的语言编写至少部分代码,并提供更多示例(你甚至可以使用 jQuery):

<!-- add JSON and jQuery support -->
<script language="JScript" src="https://cdnjs.cloudflare.com/ajax/libs/json2/20160511/json2.min.js"></script>
<script language="JScript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<script language="VBScript">
  ' VBScript functions ...
</script>

<script language="JScript">
$(function () {
  $("#btnConfirm").click(function () {       // use jQuery
    ValidateSelectionCreateFolders();        // call VBScript function from JS
    if ($("#ProcessGap").is(":checked")) {   
      ProcessGapRun();
    } else {
      alert("ProcessGap is Unchecked");
    }
  });
});
</script>

<!-- ... other HTML elements -->

<input id="btnConfirm" type="button" value="Confirm Above Selection" /></p>