*HELP* VBscript interaction with elements
I am trying to piece together an HTA application that utilizes some VBScript and JavaScript code. When ever I try to use the "Update" button, I get the error Line 187 - Object doesn't support this property or method
This doesn't seem to correspond with what I am trying to perform, but I am thinking that the Javascript that I am calling for these elements is causing some kind of issue. I appreciate any help on this:
Code:
<html>
<head>
<title>Contact Update Assistant</title>
<HTA:APPLICATION
ID="objNetOps"
APPLICATIONNAME="Contact Update Assistant"
SCROLL="Yes"
SINGLEINSTANCE="yes"
WINDOWSTATE="normal"
BORDER="dialog"
CAPTION="e-Assistant"
>
<script type="text/javascript" language="javascript">
var reOneOrMoreDigits = /[\d+]/;
var reNoDigits = /[^\d]/gi;
//***************************************************
function doMask(textBox) {
var keyCode = event.which ? event.which : event.keyCode;
// enter, backspace, delete and tab keys are allowed thru
if(keyCode == 13 || keyCode == 8 || keyCode == 9 || keyCode == 46)
return true;
// get character from keyCode....dealing with the "Numeric KeyPad"
// keyCodes so that it can be used
var keyCharacter = cleanKeyCode(keyCode);
// grab the textBox value and the mask
var val = textBox.value;
var mask = textBox.mask;
// simple Regex to check if key is a digit
if(reOneOrMoreDigits.test(keyCharacter) == false)
return false;
// get value minus any masking by removing all non-numerics
val = val.replace(reNoDigits,'');
// add current keystroke
val += keyCharacter;
// mask it...val holds the existing TextBox.value + the current keystroke
textBox.value = val.maskValue(mask);
setCaretAtEnd(textBox);
return false;
}
//***************************************************
function onFocusMask(textBox) {
var val = textBox.value;
var mask = textBox.mask;
if(val.length == 0 || val == null) {
var i = mask.indexOf('#');
textBox.value = mask.substring(0,i);
}
setCaretAtEnd(textBox);
// set just in case.
textBox.maxlength = mask.length;
}
//***************************************************
function onBlurMask(textBox) {
var val = textBox.value;
// if no digits blank it.
if(reOneOrMoreDigits.test(val) == false) {
textBox.value = '';
}
}
String.prototype.maskValue = function(mask) {
var retVal = mask;
var val = this;
for(var i=0;i<val.length;i++) {
retVal = retVal.replace(/#/i, val.charAt(i));
}
// get rid of rest of #'s
retVal = retVal.replace(/#/gi, "");
return retVal;
}
//***************************************************
function cleanKeyCode(key)
{
switch(key)
{
case 96: return "0"; break;
case 97: return "1"; break;
case 98: return "2"; break;
case 99: return "3"; break;
case 100: return "4"; break;
case 101: return "5"; break;
case 102: return "6"; break;
case 103: return "7"; break;
case 104: return "8"; break;
case 105: return "9"; break;
default: return String.fromCharCode(key); break;
}
}
//***************************************************
function setCaretAtEnd(field) {
if (field.createTextRange) {
var r = field.createTextRange();
r.moveStart('character', field.value.length);
r.collapse();
r.select();
}
}
</script>
<SCRIPT Language="VBScript">
Sub Window_Onload
Set objWshNet = CreateObject("Wscript.Network")
strCN = lcase(objWshNet.ComputerName)
strCU = lcase(objWshNet.UserName)
Dim objFS, objFile, append
append = 8
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile("contact_update_access.log", append, True)
objLogFile.WriteLine (strCU & " on " & strCN & " " & Now())
objLogFile.Close
Set objWSHShell = CreateObject("Wscript.Shell")
'36 Msgbox "The application has started."
Set objWSHShell = CreateObject("Wscript.Shell")
' Msgbox "The application has started."
Set objADSysInfo = CreateObject("ADSystemInfo")
strUser = objADSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
'msgBox "You current object path is: " & strUser
strgivenName = objUser.Get("givenName")
strdisplayName = objUser.Get("displayName")
MsgBox "Hello, " & strgivenName & "!"
'===================================================================
strMyDC = "CSDC002" & "/"
'strMyDC = My Domain Controller
Set objADSysInfo = CreateObject("ADSystemInfo")
strUser = objADSysInfo.UserName
Set objItem = GetObject("LDAP://" & strMyDC & strUser)
On Error Resume Next
'GetInfo
strStreetAddress = objItem.Get("streetAddress")
strPOBOX = objItem.Get("postOfficeBox")
strCity = objItem.Get("l")
strZIP = objItem.Get("postalCode")
strTelephoneNumber = objItem.Get("telephoneNumber")
strMobile = objItem.Get("mobile")
strTitle = objItem.Get("title")
'62 WriteInfo
Txt_Add.Value = strStreetAddress
'Txt_POBox.Value = strPOBOX
Txt_City.Value = strCity
Txt_ZIP.Value = strZIP
Txt_PhN.Value = strTelephoneNumber
Txt_Cell.Value = strMobile
Txt_Title.Value = strTitle
End Sub
Sub Update
Set objADSysInfo = CreateObject("ADSystemInfo")
strUser = objADSysInfo.UserName
Set objItem = GetObject("LDAP://" & strMyDC & strUser)
On Error Resume Next
objItem.Put "streetAddress", Txt_Add.Value
objItem.Put "l", Txt_City.Value
objItem.Put "PostalCode", Txt_ZIP.Value
objItem.Put "TelephoneNumber", Txt_PhN.Value
objItem.Put "mobile", Txt_Cell.Value
objItem.SetInfo
'Line 85
msgbox "Thank you, your information has been saved."
End Sub
Sub PrintThis
Window.Print()
End Sub
</SCRIPT>
</head>
<body>
<body STYLE="font:12pt arial; color:black;
filter:progid:DXImageTransform.Microsoft.Gradient
(GradientType=0, StartColorStr='#FFF0F5', EndColorStr='#FAFAD2')">
The purpose of the Contact Update Assistant is to maintain an accurate and current method of contacting you. <br>All of the information requested in this application will be used solely as a means of contacting you in the event of an emergency.<br> <br>
<hr>
To use this Assistant, enter the requested information and press 'Update' once you are finished.<br> <br>
Address:<br> <input type="text" name="Txt_Add" size="50"><br><br>
City:<br> <input type="text" name="Txt_City" size="50"><br><br>
Zip Code:<br> <input type="text" name="Txt_ZIP" maxlength="5" size="50"><br><br>
Cell Phone:<br> <input type="text" name="Txt_Cell" size="50" mask="(###) ###-####" onBlur="return onBlurMask(this);" onFocus="return onFocusMask(this);" onKeyDown="return doMask(this);"><br><br>
Telephone:<br> <input type="text" name="Txt_PhN" size="50" mask="(###) ###-####" onBlur="return onBlurMask(this);" onFocus="return onFocusMask(this);" onKeyDown="return doMask(this);"><br><br>
Title:<br> <input type="text" name="Txt_Title" size="50"><br><br>
<input id=runbutton class="button" type="button" value="Print" name="PrintNow" onClick="PrintThis">
<input id=runbutton class="button" type="button" value="Update" name="UpdateInf" onClick="Update"><br><br>
<BUTTON onclick="window.close()">Quit</BUTTON>
</body>
</html>
Utilize one script or the other
I suggest using VBScript to run the function form the get go as opposed to mixing and matching your scripting languages. By utilizing VB you can use Visual Studio to debug the code