在JavaScript中填充其他两个字段后填充一个字段

在JavaScript中填充其他两个字段后填充一个字段,javascript,Javascript,在填充了另外两个表单字段之后,我需要填充一个字段(使用JavaScript而不是jquery)。目前,我正在通过第二个字段上的模糊事件侦听器执行此操作;然而,这有点像黑客,因为用户可能没有按顺序填写表单。我还需要对结果值执行一些处理(连接字符串并用破折号替换空格) 我无法从逻辑上思考这样做的最佳方式是什么。我能想到的唯一方法是在两个字段都被填充(或模糊)后触发事件处理程序,但找不到任何相关信息。有什么建议吗 谢谢好吧,另一个也用模糊。在伪代码中: $('input.field1, input.f

在填充了另外两个表单字段之后,我需要填充一个字段(使用JavaScript而不是jquery)。目前,我正在通过第二个字段上的模糊事件侦听器执行此操作;然而,这有点像黑客,因为用户可能没有按顺序填写表单。我还需要对结果值执行一些处理(连接字符串并用破折号替换空格)

我无法从逻辑上思考这样做的最佳方式是什么。我能想到的唯一方法是在两个字段都被填充(或模糊)后触发事件处理程序,但找不到任何相关信息。有什么建议吗


谢谢

好吧,另一个也用模糊。在伪代码中:

$('input.field1, input.field2').on('blur', function() {
     if(field1 == filled && field2 == filled) {
         doMagic();
     } else {
         goBackToBed();
     }
}

或者在人类语言中:构建一个函数,每当两个输入字段中的一个模糊时调用该函数。然后检查两个字段是否都有内容。如果他们这样做了,做你想做的任何事情,如果他们不这样做,就等到下一个模糊事件。

就像@giorgio那样,我修改了纯javascript方式的答案,你也可以使用下面这样的事件驱动方法

HTML:


A:
B:
C:
Javascript:

<script>
        var myevent = new Event('inputFilled');
        var a = document.getElementById("a");
        var b = document.getElementById("b");
        var c = document.getElementById("c");

        a.addEventListener('inputFilled', function (e) {
            //do your code here
            c.value = "A is filled last";
        });

        b.addEventListener('inputFilled', function (e) {
            // do you code here
            c.value = "B is filled last";
        });

        a.onblur = function () {
            var textA = this.value;
            var textB = b.value;
            if (textA && textB) {
                a.dispatchEvent(myevent);
            }
        };

        b.onblur = function () {
            var textB = this.value;
            var textA = a.value;
            if (textA && textB) {
                b.dispatchEvent(myevent);
            }
        };
    </script>

var myevent=新事件('inputFilled');
var a=document.getElementById(“a”);
var b=document.getElementById(“b”);
var c=document.getElementById(“c”);
a、 addEventListener('inputFilled',函数(e){
//请在这里输入您的代码
c、 value=“A最后填写”;
});
b、 addEventListener('inputFilled',函数(e){
//你在这里编码吗
c、 value=“B最后填写”;
});
a、 onblur=函数(){
var textA=此.value;
var textB=b.值;
如果(文本A和文本B){
a、 调度事件(myevent);
}
};
b、 onblur=函数(){
var textB=此.value;
var textA=a.value;
如果(文本A和文本B){
b、 调度事件(myevent);
}
};

结果是,仅当两个输入都已填写时,您所需的代码才会执行。

请给我们一个表单示例。太好了!非常感谢:)
<script>
        var myevent = new Event('inputFilled');
        var a = document.getElementById("a");
        var b = document.getElementById("b");
        var c = document.getElementById("c");

        a.addEventListener('inputFilled', function (e) {
            //do your code here
            c.value = "A is filled last";
        });

        b.addEventListener('inputFilled', function (e) {
            // do you code here
            c.value = "B is filled last";
        });

        a.onblur = function () {
            var textA = this.value;
            var textB = b.value;
            if (textA && textB) {
                a.dispatchEvent(myevent);
            }
        };

        b.onblur = function () {
            var textB = this.value;
            var textA = a.value;
            if (textA && textB) {
                b.dispatchEvent(myevent);
            }
        };
    </script>