Javascript焦点
我使用这个脚本是因为我需要关注每个警报。我尝试了很多方法,但都不起作用 脚本:Javascript焦点,javascript,Javascript,我使用这个脚本是因为我需要关注每个警报。我尝试了很多方法,但都不起作用 脚本: function validateTime(obj) { var timeValue = obj.value; if(timeValue == "" || timeValue.indexOf(":") < 0) { alert("Invalid Time format"); obj.value = ""; return false; } e
function validateTime(obj) {
var timeValue = obj.value;
if(timeValue == "" || timeValue.indexOf(":") < 0) {
alert("Invalid Time format");
obj.value = "";
return false;
} else {
var sHours = timeValue.split(':')[0];
var sMinutes = timeValue.split(':')[1];
if(sHours == "" || isNaN(sHours) || parseInt(sHours) > 23) {
alert("Invalid Time format");
obj.value = "";
return false;
} else if(parseInt(sHours) == 0) sHours = "00";
else if(sHours < 10) sHours = "0" + sHours;
if(sMinutes == "" || isNaN(sMinutes) || parseInt(sMinutes) > 59) {
alert("Invalid Time format");
return false;
} else if(parseInt(sMinutes) == 0) sMinutes = "00";
else if(sMinutes < 10) sMinutes = "0" + sMinutes;
obj.value = sHours + ":" + sMinutes;
}
return true;
}
函数验证时间(obj){
var时间值=目标值;
如果(timeValue==“”| | timeValue.indexOf(“:”)小于0){
警报(“无效时间格式”);
obj.value=“”;
返回false;
}否则{
var sHours=timeValue.split(“:”)[0];
var sMinutes=timeValue.split(“:”)[1];
if(sHours==“”| | isNaN(sHours)| | parseInt(sHours)>23){
警报(“无效时间格式”);
obj.value=“”;
返回false;
}否则如果(parseInt(sHours)==0)sHours=“00”;
否则,如果(sHours<10)sHours=“0”+sHours;
如果(sMinutes==“”| | isNaN(sMinutes)| | parseInt(sMinutes)>59){
警报(“无效时间格式”);
返回false;
}如果(parseInt(sMinutes)==0)sMinutes=“00”;
否则,如果(sMinutes<10)sMinutes=“0”+sMinutes;
obj.value=sHours+“:”+sMinutes;
}
返回true;
}
aspx:
您只需在每次警报后调用
obj.focus()
。例如:
alert("Invalid Time format");
obj.value = "";
obj.focus();
您可能还没有对文本元素调用focus()方法。此外,将演示和功能混合使用也不是一个好的做法。不能在HTML标记中使用onchange属性
document.getElementById("lblMonday").onchange = function() {
if(!validateTime(this)) { this.focus(); }
}
通过调用alert()并在单个位置重置字段值,可以删除大部分重复,如中所示
document.getElementById("lblMonday").onchange = function() {
if(!validateTime(this)) {
this.focus();
this.value="";
alert("Invalid time format");
}
else {
//Do something else
}
}
您当然包括了jQuery,并尝试将其包装到一个文档就绪函数中?我尝试过了,不需要那一行,只要删除它(如果可能的话)编辑我的问题,请显示一点结构并始终使用大括号。现在检查我的seanrio是当用户获得警报焦点时应该出现哪个元素应该获得我实际拥有的焦点很多文本框来验证这个javascript,所以只有我调用了验证(this)。如果我喜欢你的代码,我需要为所有的文本框编写每一个javascript。我有16个文本框,用于16个文本框,我想编写代码a?不,兄弟。如果所有文本框都将使用相同的代码进行验证,则可以使用jQuery选择器并附加事件处理程序来选择所有文本框。例如,要将验证处理程序附加到每个文本字段,$(“input[type='text']”)。单击(函数(e){//validation code});如果不使用jQuery,则必须手动迭代
document.getElementsByTagName()返回的所有输入元素
使用选择器API,document.querySelectorAll('input[type=text]')
然后附加验证处理程序。您能给我提供一个示例吗
document.getElementById("lblMonday").onchange = function() {
if(!validateTime(this)) {
this.focus();
this.value="";
alert("Invalid time format");
}
else {
//Do something else
}
}