如果其他条件为Javascript

如果其他条件为Javascript,javascript,jquery,if-statement,Javascript,Jquery,If Statement,我的UI页面上有四个文本字段。我从所有TextFields中获取用户的输入值,例如值Textfield1.getvalue()、Textfield2.getvalue()、Textfield3.getvalue()、Textfield4.getvalue() 现在,单击一个按钮,我需要检查用户实际填写了哪些文本字段,并附加这些值,以便向服务器发送http请求以查询数据库。这些值用于筛选表中的值。因此,基本上这些值是“表列”值。为此,我考虑使用老式组合,如: if (Textfield1.get

我的UI页面上有四个文本字段。我从所有
TextFields
中获取用户的
输入值,例如值
Textfield1.getvalue()、Textfield2.getvalue()、Textfield3.getvalue()、Textfield4.getvalue()

现在,单击一个按钮,我需要检查用户实际填写了哪些文本字段,并附加这些值,以便向服务器发送http请求以查询数据库。这些值用于筛选表中的值。因此,基本上这些值是
“表列”
值。为此,我考虑使用老式组合,如:

if  (Textfield1.getvalue()=="" && Textfield2.getvalue()!=""){
//do something
}
else if (Textfield2.getvalue()=="" && Textfield3.getvalue()!=""){
//do something
}
else if (Textfield3.getvalue()=="" && Textfield4getvalue()!=""){
//do something
}
......

and so on.
我个人觉得这不是一种有效的编程方式。我很确定可能还有其他的方法,我不知道,也无法在谷歌上找到。有人能分享一些更好的解决方案吗


提前感谢。

一个想法-检查单个字段一次,并将其合并为一个唯一的值:

var c=0;
if (condition1) c+=1;
if (condition2) c+=2;
if (condition3) c+=4;

等等。现在,每个条件组合都有一个与之相关联的唯一值,您可以使用
开关
语句来实现更清洁的流程。

一个想法-检查单个字段一次,并将其组合成一个唯一值:

var c=0;
if (condition1) c+=1;
if (condition2) c+=2;
if (condition3) c+=4;

等等。现在,每个条件组合都有一个与之相关联的唯一值,您可以使用
开关
语句来实现更清洁的流。

如果您想基于第一个具有值的字段执行某些操作,至少这是您的示例中显示的值,您可以执行以下操作:

» « 或者,根据各种情况,更好的解决方案可能是:

var do_something2 = {
    act1 : function(k, val) { console.log("Doing x width " + val + " k=" + k) },
    act2 : function(k, val) { console.log("Doing y width " + val + " k=" + k) },
    act3 : function(k, val) { console.log("Doing z width " + val + " k=" + k) }
};

$("#post2").on("click", function() {
    var val;
    $(".test").each(function(i) {
        val = $(this).val();
        if (val) {
            do_something2[$(this).data("act")](i, val);
            return false; // Break
        }
    });
});
如果您有这样的输入字段(动态或以其他方式创建):



通过这种方式,您还可以简单地通过将
数据行为
值设置为所需函数,轻松更改每个字段所采取的操作。

如果您希望基于第一个具有值的字段执行某些操作,至少这是您的示例中显示的操作,您可以执行以下操作:

» « 或者,根据各种情况,更好的解决方案可能是:

var do_something2 = {
    act1 : function(k, val) { console.log("Doing x width " + val + " k=" + k) },
    act2 : function(k, val) { console.log("Doing y width " + val + " k=" + k) },
    act3 : function(k, val) { console.log("Doing z width " + val + " k=" + k) }
};

$("#post2").on("click", function() {
    var val;
    $(".test").each(function(i) {
        val = $(this).val();
        if (val) {
            do_something2[$(this).data("act")](i, val);
            return false; // Break
        }
    });
});
如果您有这样的输入字段(动态或以其他方式创建):



这样,只需将
数据动作
值设置为所需函数,就可以轻松更改每个字段采取的操作。

考虑数据而不是控制流。我建议用这种方式思考这个问题:

数据->验证->副作用

所有这些步骤都必须解耦。下面是一个示例,您可能需要重新考虑数据以调整代码:

// Data
var fields = [Textfield1, Textfield2, Textfield3, Textfield4];

// Validation
var valid = fields.filter(function(x) {
  return x.getvalue();
});

// Side effects
valid.forEach(function(field) {
  var value = field.getvalue();
  // do something
});

考虑数据而不是控制流。我建议用这种方式思考这个问题:

数据->验证->副作用

所有这些步骤都必须解耦。下面是一个示例,您可能需要重新考虑数据以调整代码:

// Data
var fields = [Textfield1, Textfield2, Textfield3, Textfield4];

// Validation
var valid = fields.filter(function(x) {
  return x.getvalue();
});

// Side effects
valid.forEach(function(field) {
  var value = field.getvalue();
  // do something
});

那是什么?
.getValue()
?.getValue()是一个获取文本字段值的函数。那是什么?
.getValue()
?.getValue()是一个获取文本字段值的函数。我想到了类似的东西。但如果你能简单介绍一下你的几行台词,我会很高兴的!我想到了这样的事情。但如果你能简单介绍一下你的几行台词,我会很高兴的!