在填充了两个其他表单字段后,我需要填充一个字段(使用JavaScript而不是jquery)。目前,我是通过第二个字段上的模糊事件监听器来完成的;但是,它有点像黑客,因为用户可能无法按顺序填写表单。我还需要对结果值执行一些处理(连接字符串并用短划线替换空格)。
我无法从逻辑上思考如何做到这一点的最佳方法。我能想到的唯一方法是在两个字段填充(或模糊)之后触发的事件处理程序,但无法找到有关此内容的任何信息。有什么建议吗?
由于
答案 0 :(得分:1)
嗯,另外一个也使用模糊。在伪代码中:
$('input.field1, input.field2').on('blur', function() {
if(field1 == filled && field2 == filled) {
doMagic();
} else {
goBackToBed();
}
}
或者用人类语言:构建一个每当两个输入字段中的一个被模糊时调用的函数。然后检查BOTH字段是否包含内容。如果他们这样做,做任何你想做的事情,如果他们不这样做,只要等到下一个模糊事件。
答案 1 :(得分:1)
像@giorgio一样,我修改了纯javascript方式的答案,你也可以使用下面的事件驱动方法。
HTML:
<section>
A:<input type="text" id="a" />
B:<input type="text" id="b" />
C:<input type="text" id="c" />
</section>
使用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>
结果是,只有两个输入都被填充时才会执行所需的代码。