Изменение значений cfform с помощью JavaScript для динамического связывания вывода - PullRequest
1 голос
/ 04 октября 2011

CFM

<html>
<head>
<title>Test Page</title>
<script type="text/javascript">
    function toggleV(value){
        document.getElementById('blah').value = value;
    }
</script>
</head>
<body>
<cfform name="coolfrm">
    <cfinput type="hidden" name="blah" id="blah" value="default">
    <a onclick="toggleV('anothervalue')" style="cursor:pointer;">click Me</a>
</cfform>

<cfdiv bind="cfc:TestCFC.func({coolfrm:blah})"></cfdiv>

</body>
</html>

CFC

<cfcomponent>
    <cfscript>
        remote function func(simpleString){
            return simpleString;
        }
    </cfscript>
</cfcomponent>

Я ожидаю, что этот код сделает изменение текста в cfdiv с "default" на "anothervalue".

Это не работает так, как я думаю, и мне хотелось бы знать, почему.

1 Ответ

2 голосов
/ 05 октября 2011

По определению из: http://www.w3.org/TR/html4/interact/scripts.html

Событие onchange происходит, когда элемент управления теряет фокус ввода, и его значение было изменено с момента получения фокуса.

Событие change не запускается корректно при программном изменении поля.

Решите это, слегка изменив функцию JavaScript:

function toggleV(value){
    document.getElementById('blah').value = value;
    ColdFusion.Event.callBindHandlers('blah',null,'change');
}
...