Javascript 显示特定跨距的错误时出现问题
数据是我从另一个页面获得的json,它看起来很像 数据:Javascript 显示特定跨距的错误时出现问题,javascript,jquery,html,css,json,Javascript,Jquery,Html,Css,Json,数据是我从另一个页面获得的json,它看起来很像 数据: {"BusNo":["The bus no field is required."],"CompID":["The comp id field is required."],"TotalSeats":["The total seats field is required."]} 这是我的剧本: $(document).ready(function() { $("#driver").click(function(event) {
{"BusNo":["The bus no field is required."],"CompID":["The comp id field is required."],"TotalSeats":["The total seats field is required."]}
这是我的剧本:
$(document).ready(function() {
$("#driver").click(function(event) {
var BusNo = $("#BusNo").val();
var CompID = $("#CompID").val();
var TotalSeats = $("#TotalSeats").val();
var _token = $("#_token").val();
$.post("managebus_register", {
_token: _token,
BusNo: BusNo,
CompID: CompID,
TotalSeats: TotalSeats
},
function(data) {
if (data != '') {
var obj = JSON.parse(data);
$.each(obj, function(entry) {
var targetSelector = '';
if (entry == "BusNo") {
targetSelector = "#BusNo";
console.log('error in bus field');
}
if (entry == "CompID") {
targetSelector = "#CompID";
console.log('error in comp id');
}
if (entry == "TotalSeats") {
targetSelector = "#TotalSeats";
console.log('error in total seats');
}
if (targetSelector)
$(targetSelector).next("span.error").html(obj[entry]);
else {
$(targetSelector).next("span.error").text(' ');
}
});
} else {
console.log('pass');
}
});
});
});
如果if(data!='')
并检查targetSelector=“#BusNo”代码>
我的问题是,一旦脚本运行,它会将错误抛出到特定范围,即BusNo、CompID等
一旦它被填满,它就会继续显示错误消息
也就是说,给定的脚本
if (targetSelector)
$(targetSelector).next("span.error").html(obj[entry]);
else {
$(targetSelector).next("span.error").text(' ');
}
这里是else部分$(targetSelector).next(“span.error”).text(“”)代码>不工作
我所犯的错误是什么?我该如何纠正
更新:
我知道了
$("span.error").empty();
我会这样做的
但是我需要突出显示带有错误的输入文本框,错误应该只显示在特定文本的悬停处,而不显示在
<input type="text" id="BusNo" name="BusNo"/><span class="error"></span>
<input type="text" id="CompID" name="CompID"/><span class="error"></span>
代码更改:
if (targetSelector)
$(targetSelector).next("span.error").html(obj[entry][0]);
else {
$(targetSelector).next("span.error").text(' ');
}
如果要在悬停时显示错误:
$("input").hover(function(){
var id = $(this).attr("id");
$("input").next("span.error").hide();
$("#"+id).next("span.error").show();
})
我还强烈建议始终在语句中使用{}
,特别是在问题末尾突出显示的代码这样的情况下,如果if
部分没有它们,但是else
部分有,那么它应该做什么?您正在检查targetSelector是否为truthy,而不是truthy,这意味着它是一个空字符串(或null、未定义等),因此您的else语句的计算结果为:$(“”).next(“span.error”).text(“”)代码>这不会做任何事情。@JOnathanCrowe:Now$(“span.error”).empty();是吗work@T.J.Crowder感谢您的编辑,我将按照您的话,并使用jsbeautifier.org。谢谢谢谢,我已经修正了,现在我只需要在悬停中应用错误悬停函数应该在文档上的上。准备好了吗?是的,它工作得很好,悬停工作,我需要使错误文本框带有红色框阴影来突出显示错误,如何在您的代码中执行此操作?请在文本框中添加类并在该类webkit框上应用css阴影:0px 0px 3px 0px 35; ff0000;盒影:0px 0px 3px 0px#ff0000;如果我添加,它将为所有输入框高亮显示,对,,,,,实际上,我只需要高亮显示有错误的特定文本框,,,,,,,我如何才能做到这一点