根据其他表单字段更新表单字段

时间:2015-12-15 18:37:05

标签: javascript jquery forms input onchange

我有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'

我甚至关闭了吗?

1 个答案:

答案 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>

我希望它会对你有所帮助!