Я экспериментирую с XForms и пытаюсь динамически загружать javascript, но не могу понять это.Позвонить javascript из действия XForms
Я представляю простой пример - это просто поле и кнопка ввода, которая загружает JavaScript:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:ev="http://www.w3.org/2001/xml-events" >
<head>
<title>Hello World in XForms</title>
<xf:model>
<xf:instance xmlns="">
<data>
<firstName/>
</data>
</xf:instance>
</xf:model>
<script type="text/javascript">
var myFunction = function(){
var name = document.getElementById("firstName").value;
alert("Hello " + name + "!");
}
</script>
</head>
<body>
<xf:label>Please enter your first name: </xf:label>
<xf:input ref="firstName" id="firstName">
</xf:input>
<br />
<xf:trigger>
<xf:label>Click me!</xf:label>
<xf:action ev:event="DOMActivate">
<xf:load resource="javascript:myFunction()" />
</xf:action>
</xf:trigger>
</body>
</html>
Так что в моем сценарии я пытаюсь получить значение из поля ввода, а затем показать предупреждающий блок с конкатенированной строкой. В настоящее время я получаю «Hello undefined!»
У вас есть идея, как получить значение от firstName
xf:input
с помощью Javascript? Я знаю, как это сделать только с XForms, но это своего рода доказательство концепции.
На боковой ноте - я использую XSLTForms, поэтому XForms запускается на клиенте.
Другой намек может быть в том, что XSLTForms трансформирует xf:input
в несколько вложенных span
элементов с <input type="text">
элементом, но input
элемент не имеет имя или идентификатор.
Вы должны установить 'id' на входе, а не только имя, потому что вы используете' getElementById'. В вашем примере: ''. –
GuyT
Да, я действительно установил 'id' ввода. Но в моих попытках проб и ошибок я также экспериментировал с 'getElementByName'. Я сделал редактирование. Спасибо за комментарий. – lapadets
Что вы на самом деле хотите, чтобы скрипт выполнял? Ваш текущий пример может быть достигнут с помощью xf: alert. Другие скриптовые функции могут быть достигнуты с помощью xf: bind –