我有2个表单,每个表单都进行特定的计算。在其中一个表单(TCO)上,其中一个输入字段基于另一个表单(MORTGAGE)中的输入字段填充。
我下面的脚本运行正常 -
<script>
function checkVar()
{
if( typeof myglobalvar != 'undefined' && myglobalvar != '' && myglobalvar != 0 && jQuery( '.mclass input' ).length )
{
jQuery( '.mclass input' ).val( myglobalvar );
fbuilderjQuery.fbuilder.calculator.defaultCalc( '#'+jQuery( '.mclass input' ).closest( 'form' ).attr('id') );
}
else
{
setTimeout( checkVar, 1000 );
}
}
checkVar();
</script>
在第一种形式中,我将我的计算公式包含在另一个函数中 -
(function(){
myvar = fbuilderjQuery.fbuilder.calculator.format( ROUND((fieldname17*(fieldname23/100)/fieldname12)), { 'groupingsymbol' : ',' } );
myglobalvar = myvar;
return myvar;
})()
一切正常,但是当更改或更新第一个表单中的值时,第二个表单不会更新。
有没有办法在字段更新时添加某种事件/更改侦听器?
编辑: 使用以下评论中的一条建议 -
document.getElementById('fieldname22_7').addEventListener("oninput", function(evt) {
var Mor = document.getElementById('fieldname22_7').value;
document.getElementById('fieldname47_20').value = Mor; });
但是我收到了以下错误 -
未捕获的TypeError:无法读取null
的属性'addEventListener'
我甚至关闭了吗?
答案 0 :(得分:1)
我无法完全理解您的代码,但我认为,它可以帮助您。 所以。你有两种形式:
<form>
<input id="input-1">
</form>
<form>
<input id="input-2">
</form>
如果“input-1”的值发生变化,您也希望更改“input-2”。
在这种情况下,您应该使用'oninput'事件。 所以添加一个事件处理程序到“input-1”
<input id="input-1" oninput="myEventHandler();">
事件处理程序是:
<script>
function myEventHandler() {
var in = document.getElementById('input-1').value;
//Check the input
document.getElementById('input-2').value = in;
}
</script>
我希望它会对你有所帮助!