JavaScript/jQuery-识别表单输入的类型(即单选按钮、文本输入、下拉列表)
我试图让我的JS识别页面上可见的表单输入类型。我正在做一个小测验,当你按下“下一步”按钮时,它将显示下一个问题,只要上一个问题得到了回答。如果不是,则应显示警报。我试图让JS识别问题的输入类型,这样它就可以看到是否没有选中单选按钮,如果问题是单选按钮问题。但到目前为止,它将所有问题都视为文本和广播问题。我不知道我做错了什么。我已经做了好几个小时了 以下是JS小提琴: 代码如下:JavaScript/jQuery-识别表单输入的类型(即单选按钮、文本输入、下拉列表),javascript,jquery,html,Javascript,Jquery,Html,我试图让我的JS识别页面上可见的表单输入类型。我正在做一个小测验,当你按下“下一步”按钮时,它将显示下一个问题,只要上一个问题得到了回答。如果不是,则应显示警报。我试图让JS识别问题的输入类型,这样它就可以看到是否没有选中单选按钮,如果问题是单选按钮问题。但到目前为止,它将所有问题都视为文本和广播问题。我不知道我做错了什么。我已经做了好几个小时了 以下是JS小提琴: 代码如下: $("button").click(function() { if ($("input:visible [type
$("button").click(function() {
if ($("input:visible [type=text]") || $("select") ) {
console.log("this is text or select");
}
if ($("input:visible :radio")) {
console.log("this is radio");
}
showNext();
}); // end button click function
我为您编写了一个非常基本的验证函数,因为您一次只能看到一个问题。您可能还想查看验证库,但这将使您走上正确的道路:
function isValid() {
var $form = $('form:visible'),
$input = $form.find('input'),
$select = $form.find('select');
var type = $input.length ? 'input' : ($select.length ? 'select' : 'error');
if (type == 'error') {
alert('invalid input type found');
return false;
}
if ($form.find('input[type="radio"]').length) {
return $form.find('input[type="radio"]:checked').length;
}
var inputVal = $form.find(type).val();
return inputVal !== null && inputVal.length;
}
您可以检查表单是否有效,如下所示:
$("button").click(function () {
console.log('form is valid: ' + isValid());
if (!isValid()) {
alert("Please enter a response.");
} else {
...
此外,您可能希望用更具体的内容替换“form:visible”。$“select”。即使隐藏,长度也将不为零。谢谢。为了帮助我理解代码,为什么在变量中使用美元符号?i、 e.var$form=…哦,它只是让我知道变量是一个jQuery object=P。当然可以从变量中省略美元符号。我不知道为什么,但如果我没有为问题5输入答案,它不会发出警报。这是第二个单选按钮问题。我想可能吧。find只找到了第一个匹配项,但查看jquery文档,这似乎不是原因。当问题5没有回答时,它会将答案记录为“是”。它没有被检查,但出于某种原因,jquery认为它是。即使我选择了“否”,它也会在控制台日志中将答案记录为“是”。这可能是因为我没有预先准备表单“查找选择”。我会更新