我使用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>
答案 0 :(得分:0)
我不确定你的代码有什么问题,但一种方法是将焦点放在一个函数中。
所以......
function focusIt()
{
var mytext = document.getElementById("divId");
mytext.val("");
mytext.focus();
}
从if / else语句中调用它......
if (ungueltiges)
{
alert("invalid time");
focusIt()
}