我正在进行测验,并且在单击“下一步”按钮时尝试检查空输入字段。如果有人不回答问题,那么我想发出警报并阻止他们进入下一个问题。
出于某种原因,使用我的代码,在第二个问题上,即使您在第二次尝试时输入响应,它也会给出“无响应”警报。我无法弄清楚原因。
以下是引发警报的代码部分:
$("button").click(function() {
// check for empty input
var inputVal = $.trim($(".question:visible input").val());
console.log("The value of the input is: " + inputVal);
if (inputVal.length == 0 || inputVal == "") {
alert("Please enter a response.");
} else {
position++;
quesNum = position + 1;
// hide previous question
$(".question").hide();
// show next question
if (position < totalQues) {
$(".question").eq(position).show();
$(".questionNumber").text("Question " + quesNum + " of " +
totalQues);
} else {
// at the end of the questions, hide the questions and show the results
$(".question, .questionNumber, button").hide();
// calculate risk percentage
calculatePerc();
//show results template
$(".results").show();
showResults();
}
}
}); // end button click function
这是我的JS小提琴:
http://jsfiddle.net/amykirst/mpjg2vbk/
如何让下拉警报正常工作,以便在第二次尝试时输入回复时让您继续操作?
答案 0 :(得分:0)
您必须知道下拉列表(选择)不是输入标记是选择标记,您正在搜索输入,但下拉列表是选择而不是输入
答案 1 :(得分:0)
这种情况发生了,因为在第二个问题中,您没有使用input
,它是一个select
标记,可以使用简单的if语句找到: DEMO < /强>
if($(".question:visible input").length==0){
inputVal=$(".question:visible select").val();
}
建议:
我相信使用switch()
而不是在代码中使用那么多if()
语句会更容易,更有效。
<强>更新强>
发生radio
问题是因为对于radio
输入,您必须获取checked
无线电的值。这是修复它,您需要在代码中添加另一个if()
语句: DEMO
if($(".question:visible input").length==0){
inputVal=$(".question:visible select").val();
}
else if($(".question:visible input[type=radio]").length>0){
inputVal=$(".question:visible input[type=radio]:checked").val();
if($(".question:visible input[type=radio]:checked").length==0) inputVal='';
}
<强> UPDATE2:强>
您需要添加另一个if()
声明: DEMO
if($(".question:visible input").length==0){
inputVal=$(".question:visible select").val();
if(inputVal==null) inputVal='';
}
else if($(".question:visible input[type=radio]").length>0){
inputVal=$(".question:visible input[type=radio]:checked").val();
if($(".question:visible input[type=radio]:checked").length==0) inputVal='';
}