根据用户输入显示或隐藏字段

Show or Hide field based on user input

我必须显示复选框,只有当 firstname 匹配 abcemailabc@gmail.com.

var x = abc; //will come dynamically
var y = abc @gmail.com

jQuery("#firstname").on('change', (function(avalue) {
    return function(e) {

        if (e.targetvalue == avalue) {
            //show checkbox
        } else {
            //hide checkbox
        }
    };
})(x));

jQuery("#email").on('change', (function(avalue) {
    return function(e) {

        if (e.targetvalue == avalue) {
            //show checkbox
        } else {
            //hide checkbox
        }
    };
})(y));

这很好用。但是,如果我输入用户名 abc 和电子邮件 abc@gmail.com,然后我再次输入错误的电子邮件,复选框被隐藏,这不应该,因为名称已正确设置 abc

我怎样才能做到这一点?

问题是您单独检查字段值。您需要检查 firstname onchange 函数中的 email 字段值,并检查 email onchange 中的 firstname 字段值。否则这两个字段之间就没有逻辑关系。

您应该像这样将这两项检查合并为一张:

var x = abc; //will come dynamically
var y = abc@gmail.com

function checkValues() {
    if(jQuery("#firstname").val() == x && jQuery("#email").val() == y) {
          //show checkbox
    } else{
         //hide checkbox
    }
}

jQuery("#firstname, #email").on('change', checkValues);

虽然已经在使用 jQuery,但您也可以将最后一行替换为:

jQuery("#firstname, #email").change(checkValues);