【问题标题】:Is there a cleaner way to toggle class for form validation?有没有更简洁的方法来切换表单验证的类?
【发布时间】:2015-12-14 20:58:45
【问题描述】:

我正在实施上述观点。该表是通过 AJAX 调用创建的。为了创建红色验证框,我创建了这样的表:

for($r = 0; $r < sizeof($dataArray); $r++)
  for($i = 2; $i < $fields; $i++){      
    if(fieldIsValid($dataArray[$r][$i], $dataArray[$r][2], $i)){
        Echo "<td><input class='stageAreaInput' onchange='updateData(this.value, ".$r.", ".$i.")' value='".$dataArray[$r][$i]."'></td>";
    } else{         
        Echo "<td><input class='stageAreaInput invalidInput' onchange='updateData(this.value, ".$r.", ".$i.")' value='".$dataArray[$r][$i]."'></td>";
    }
  }
}

invalidInput 类是触发红色框的原因。但是现在,我需要拆分几行来单独识别它们以进行自动完成。我觉得一长串的 if 语句效率很低。

如果我现在必须单独 Echo 每一行,是否有更好的方法来切换 invalidInput 类?

如果我的更多代码有帮助,请告诉我。

【问题讨论】:

  • 我会使用返回循环中调用的invalidInput 的函数
  • 我会尝试这种方法

标签: javascript php jquery validation


【解决方案1】:

我看到你用jquery 标记了这个问题。您可以使用.toggleClass() 方法在调用类时自动添加和删除。

jQuery

$(".stageAreaInput").toggleClass("invalidInput");

如果你想在PHP 循环中内联,你可以使用ternary statement 来切换类。它会缩短您的代码,但(可以说)使其不那么可读。

内联 PHP:三元

for($r = 0; $r < sizeof($dataArray); $r++){
    for($i = 2; $i < $fields; $i++){       
        echo "<td><input class='stageAreaInput ".((fieldIsValid($dataArray[$r][$i], $dataArray[$r][2], $i)) ? "" : "invalidInput")."' onchange='updateData(this.value, ".$r.", ".$i.")' value='".$dataArray[$r][$i]."'></td>";
    }
}

【讨论】:

  • 但是在我构建表时,if 语句如何触发呢?
  • 建表完成后,您可以调用它来将无效字段设置为无效。我将在PHP 中添加另一种方法,因为看起来这就是您在这里所要求的。
  • 非常优雅!完美解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多