0

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

我做错了什么...?

我有一组 3 个带有“azeit”类的文本输入(以及在这些“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") (因为这需要关注同一类的另一个字段)。

4

1 回答 1

0

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

所以 ...

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

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

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

}
于 2012-06-14T10:51:30.897 回答