2013-06-19 76 views
0

我无法成功使用focusout事件中的.focus(),在同一个元素上。我也尝试过setTimeout。有任何想法吗?.focus()不能在.focus()事件中工作

$(control).focusout(function (e) { 
        if ($(this).val().length > 0) { 
         for (var ii = 0; ii < sampleDTOList.length; ii++) { 
          if (sampleDTOList[ii]["controlId"] == $(this).attr("id")) { 
           if ($(this).val() <= parseFloat(sampleDTOList[ii]["maxValue"]) && $(this).val() >= parseFloat(sampleDTOList[ii]["minValue"])) { 
            sampleDTOList[ii]["value"] = $(this).val(); 
            RunRulesOnSample(sampleDTOList[ii]); 
            return; 
           } 
           else { 
            $(this).val(""); 
            alert("You must enter a value between " + sampleDTOList[ii]["minValue"] + " and " + sampleDTOList[ii]["maxValue"] + "."); 
            $(this).focus(); 
            return; 
           } 
          } 
         } 
        } 
       }); 
+1

你要根据病情再次聚焦一个解决办法! – zod

回答

0

我认为不可能直接调用focusout事件处理函数的焦点函数。另外,您不能在事件对象上声明preventDefault(),因为focusout事件不可取消。

但似乎你可以使用setTimeout函数:

$('#foo').focusout(function(e) { 
    setTimeout(function() { 
     $('#foo').focus(); 
    }, 10); 
}); 

看看这个jsFiddle

而且你还可以找到它使用mousedown事件焦点了here

相关问题