JavaScript正则表达式未经验证

时间:2014-11-18 12:13:15

标签: javascript html css regex smarty

我的代码有问题。如果我不匹配正则表达式,它应显示红色输入框,否则它应显示为绿色输入框。

function IsValid(pole, regex) {
  if (regex.test(pole.value)) {
    pole.className = "ok";
    return true;
  } else {
    pole.className = "chyba";
    return false;
  }
}

function OnSubmit(form) {
  if (IsValid(form.filter_date, dateReg)) {
    return true;
  } else {
    return false;
  }
}
window.onload = init;

function init() {
  var filter_date = document.getElementById("filter_date");
  dateReg = /^\d{2}-\d{2}-\d{4}$/;
  filter_date.onblur = function() {
    IsValid(this, dateReg);
  }
  document.forms("filter_form").onsubmit = function() {
    return OnSubmit(this);
  }
}
.ok {
  background-color: red;
}
.chyba {
  background-color: green;
}
<form id="filter_form" name="filter_form" action="" method="post">
  <table class="filter_training" cellspacing="0" width="100%">
    ....
    <input type="text" id="filter_date" name="filter_date" placeholder="01-01-1970" />....
  </table>
</form>

2 个答案:

答案 0 :(得分:2)

1)。主要问题是onsubmit处理程序应该以这种方式绑定:

document.forms.filter_form.onsubmit = function(){
    return OnSubmit(this); 
}

因为document.forms("filter_form")会引发错误,因为document.forms是一个集合,而不是一个函数。

2)。另一个小问题是你混淆了颜色,它应该是:

.ok { background-color: green; }
.chyba { background-color: red; }

演示:http://jsfiddle.net/fjm9yhdx/

答案 1 :(得分:1)

确实有效:http://jsfiddle.net/d8swfdbj/

.ok{ color: green;}
.chyba{ color: red; }

你的绿色/红色课程只是错误的方式。