JavaScript文本字段验证:重新发送焦点

时间:2012-06-14 10:42:15

标签: javascript jquery events

我使用JQuery和JavaScript作为时间值的输入表单,我无法使JavaScript提供对错误输入格式的预期反应。

我做错了什么??

我有一组带有“azeit”类的3个文本输入(在这些“projekt”类中有许多其他输入)。所有都用于输入时间值。一旦用户退出该字段,我就验证格式,用它进行计算并在id为“summe1”的字段中显示该结果。这有效。如果格式不正确,我会显示一个警告,我想要要做的是在清空后将焦点返回到该字段。然而,焦点永远不会被返回(尽管它会被清空)。就是这样:

var kalkuliere_azeit = function(e) {

  var anf = $("#anfang");
  var ende = $("#ende");
  var pause = $("#pause");
  var dauer_in_min = 0;
  var ungueltiges = null;

  if (nonempty(anf.val(), ende.val()), pause.val()))
  {
    if (!is_valid_date(make_date(anf.val()))){
      ungueltiges = anf;
    };
    if (!is_valid_date(make_date(ende.val()))){
      ungueltiges = ende;
    };
    if (!is_valid_date(make_date(pause.val()))){
      ungueltiges = pause;
    };
    if (ungueltiges)
    {
      alert("invalid time"); //This is where I am stuck
      ungueltiges.val("");
      ungueltiges.focus();
    }
    else {
      dauer_in_min = hourstring_to_min(ende.val())
      - hourstring_to_min(anf.val())
      - hourstring_to_min(pause.val());
      $("#summe1").text(min_to_hhmm(dauer_in_min));
    };
  };

};
....

$(document).ready(function() {
  $(".projekt").change( kalkuliere_summe);
  $(".azeit").focusout(kalkuliere_azeit);
});

“projekt”类的字段低于“azeit”类的字段,因此当用户离开“azeit”类的第三个字段时,它们将获得焦点。

我为提供不完整的源代码而道歉。我希望有人可以出错了。

我想提一点的是,我尝试将处理程序绑定到onblur和onfocus。当我将它绑定到onfocus时,焦点会重置到该字段,但是用户输入的最后一个字段将不会正确更新字段$(“#summe1”)(因为这需要聚焦同一类的另一个字段)。 / p>

1 个答案:

答案 0 :(得分:0)

我不确定你的代码有什么问题,但一种方法是将焦点放在一个函数中。

所以......

function focusIt()
{
  var mytext = document.getElementById("divId");
  mytext.val("");
  mytext.focus();
}

从if / else语句中调用它......

if (ungueltiges)
{
alert("invalid time");
focusIt()      

}