我有一个HTA,其中有几个<input type="text">
框供用户输入数据。我试图将这些数据传递给VBScript。
这是HTML:
<div id="tableContent" name="tableContent" style="display:block;">
<table>
Broad Search
<tr>
<th>Date</th>
<th>Employee ID</th>
</tr>
<tr>
<td><input type="text" id="dateInput" name="dateIDInput" size="10"></td>
<td><input type="text" id="employeeIDInput" name="employeeIDInput" size="8"></td>
</tr>
</table>
<br/>
<table>
Specific Search
<tr>
<th>WO Base ID</th>
<th>Lot ID</th>
<th>Split ID</th>
<th>Sub ID</th>
<th>Operation</th>
</tr>
<tr>
<td><input type="text" id="woBaseIDInput" name="woBaseIDInput" value="" size="7"/></td>
<td><input type="text" id="woLotIDInput" name="woLotIDInput" value="" size="3"/></td>
<td><input type="text" id="woSplitIDInput" name="woSplitIDInput" value="" size="3"/></td>
<td><input type="text" id="woSubIDInput" name="woSubIDInput" value="" size="3"/></td>
<td><input type="text" id="woOpInput" name="woOpInput" value="" size="3"/></td>
</tr>
</table>
这是VBScript:
'The following code retrieves the user supplied data.
Set woBaseIDInput = document.getElementById("woBaseIDInput")
Set woLotIDInput = document.getElementById("woLotIDInput")
Set woSplitIDInput = document.getElementById("woSplitIDInput")
Set woSubIDInput = document.getElementById("woSubIDInput")
Set woOpInput = document.getElementById("woOpInput")
Set dateInput = document.getElementById("dateInput")
Set employeeIDInput = document.getElementById("employeeIDInput")
Set outputTableElement = document.getElementById("outputTable")
'The following code will sanitize user input. Only numbers and characters are allowed.
stringsToCheck = Array(woBaseIDInput, woLotIDInput, woSplitIDInput, woSubIDInput, woOpInput, dateInput, employeeIDInput)
Set regExp = New RegExp
regExp.IgnoreCase = True
regExp.Global = True
regExp.Pattern = "[^a-z0-9]" 'Add here every character you don't consider as special character
woBaseIDClean = regExp.Replace(woBaseIDInput.innerHtml, "")
woLotIDClean = regExp.Replace(woLotIDInput.innerHtml, "")
woSplitIDClean = regExp.Replace(woSplitIDInput.innerHtml, "")
woSubIDClean = regExp.Replace(woSubIDInput.innerHtml, "")
woOpClean = regExp.Replace(woOpInput.innerHtml, "")
dateClean = regExp.Replace(dateInput.innerHtml, "")
employeeIDClean = regExp.Replace(employeeIDInput.innerHtml, "")
问题出在woBaseIDClean
上,并且所有的朋友(在VBS代码块的底部)都没有使用HTML字段中的数据填充。
我尝试使用.innerHtml
和.value
,但这两个都不起作用。我注意到有时似乎使用.innerHtml
将变量设置为对象?
.value
不执行任何操作(我认为)。
当我使用.outerHtml
时,将按预期方式获得整个元素,标签以及所有内容。
我在做什么错?如何将用户提供的数据放入我的VBScript中?
我想在精心制作的SQL查询中使用输入到HTML页面的数据。
答案 0 :(得分:1)
我想出了答案!
如“ Teemu”所述,innerHtml将不起作用。我将所有这些都切换为.value,这不会引发错误,但是也没有将值从HTML传递到VBS。
我回到我的VBS脚本,将几乎所有内容都封装在一个Sub Main中,然后返回并向HTML中的Submit按钮添加了onclick事件,以调用Main()。现在,将使用文本字段中的数据填充变量。
所以发生的事情是HTA命中时将加载并调用VBS脚本。 VBS脚本会加载并执行所有代码,但是在运行时,不会填充正在检查.value的元素,因此变量也不会填充。
通过将逻辑封装在一个子代码中并在填写完字段后调用该子代码,代码将执行并找到现在填充的字段。