Попытка передать значение переменной в поле ввода HTA значение параметра =

#vbscript #hta

#vbscript #hta

Вопрос:

 --------------------------------
  

В приведенном выше примере выбор производится из нижнего поля ввода, заполненного из массива. При выборе соответствующее значение индекса из второго массива копируется в буфер обмена. Окно сообщения используется для информирования пользователя о значении, скопированном в clipbord, но это неудобно. Я добавил второе поле ввода только для чтения, чтобы отобразить это значение.

 <input type="text" id = "Resulta)" / style="text-align:center;" readonly style='width:160px'/ value= bOpt(isel)>
  

Переменная bOpt(isel) не распознается как таковая и обрабатывается как текст, несмотря на то, что она не указана в кавычках. есть ли простой способ обойти это?

 <html>
<head>
<HTA:Application ID="HTA"
 ApplicationName="ListBox"
form name="myform"
onclick = 'Selected()'
<style type="text/css"> body {overflow-y:hidden;</style>
<style type="text/css"> body {overflow-x:hidden;</style>
Border="thin"
 BorderStyle="normal"
 Caption="no"
:::-webkit-scrollbar {
width: 0px; /* remove scrollbar space /
background: transparent; / optional: just make scrollbar invisible /
scroll = "no"
scrollflat = "no"
Icon=""
 MaximizeButton="yes"
 MinimizeButton="yes"
 ShowInTaskBar="yes"
 SingleInstance="yes"
 SysMenu="no"
 Version="1.0"
 WindowState="maximize"
<script type="text/vbscript">

Option Explicit

Sub Document_OnKeyUp()
  intKeyCode = Window.Event.Keycode
  If intKeyCode = 27 Then Window.Close
End Sub

Dim aOpt, bOpt, iSel, iOpt, sOpt, messij
Sub Window_Onload()
Const cWid = 220
Const cHei = 122
window.resizeTo cWid, cHei
window.MoveTo screen.width/1-(cWid/1),screen.height/1-((cHei/1)   40 )

 document.parentwindow.clipboardData.SetData("TEXT"),"Fred@Email.com.au"

'<script language = "vbscript" type = "text/vbscript">

aOpt = Array("Fred email",_  
    "Bert email",_ 
    "Sally email",_
    "David email",_
    "Peter emal")

bOpt = Array("Fred@Email.com.au" , _                                                                       "Bert@Email.com.au" , _                                                                                                           
    "Sally@Email.com.au" , _                                                                                                             
    "David@Email.com.au" , _                                                                                                                 
    "Peter@Email.com.au")

sOpt = "<select id='entries' style='width:160px'>" 
     '    amp; "<option selected>" amp; document.title amp; "</option>"
For iOpt = 0 To UBound(aOpt)
    sOpt = sOpt amp; "<option>" amp; aOpt(iOpt) amp; "</option>"
Next           
   
sOpt = sOpt amp; "</select><p>" 
document.getElementById("opts").innerHTML = sOpt
End Sub

Sub Selected()

Dim iSel
    iSel = document.getElementById("entries").selectedIndex

  messij = "YOU SELECTED" amp; chr(13) amp; chr(13) amp; "          " amp; aopt(isel) amp; chr(13) amp; chr(13) amp; "WHICH CAUSED THE VALUE" _
         amp; chr(13) amp; chr(13) amp; "          " amp;  bopt(isel) amp; chr(13) amp; chr(13) amp; "TO BE COPIED TO THE CLIPBOARD"
 'msgbox messij
 document.parentwindow.clipboardData.SetData("TEXT"),bopt(isel)

End Sub

</script>
</head>
<body>
<input type="text" id = "Resulta)" / style="text-align:center;" readonly style='width:160px'/ value= bOpt(isel)>
<body> 
<body bgColor="yellow">
<center>
<span id="resulta"></span>
<span id="opts"></span>
</center>
</html>
  

Комментарии:

1. Форматирование <input> элемента выглядит немного странно (почему есть скобка) в конце id атрибута (кажется странным именем для идентификатора) и есть косые черты / в середине определения элемента?

2. Я удивлен, что у вас не появляются ошибки, я не вижу, насколько это document.parentwindow.clipboardData.SetData("TEXT"),bopt(isel) правильный синтаксис. Вы имели в виду document.parentwindow.clipboardData.SetData "TEXT", bopt(isel) ?

Ответ №1:

Я поместил это в подраздел

 document.getElementById("fixit").value = bopt(isel)
  

который принял значение переменной, и я изменил свой исходный ввод, который обрабатывал имя переменной как текст, удалив значение = параметр

 <input type="text" id = "fixit" / style="text-align:center;" readonlyx style='width:160px'>
  

Поле ввода теперь успешно загружается со значениями переменных

Я нашел свое решение в другом вопросе Stackoverflow, но не могу найти его снова, чтобы подтвердить.

Ответ №2:

Я добавил a Dim , чтобы получить ключ escape для правильного завершения:

 Dim intKeyCode
  

Я удалил явное значение, заданное для поля ввода:

 value= bOpt(isel)
  

Я переименовал Resulta) текстовое поле в Resulta (что потребовало переименования более позднего интервала с Resulta на Resultas , чтобы избежать дублирования имен).

Затем, наконец, я явно ввел значение Resulta в выбранный код:

 resulta.value = bOpt(iSel)
  

Я никогда раньше не видел onClick() события, добавленного в раздел HTA.