Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/jQuery-识别表单输入的类型(即单选按钮、文本输入、下拉列表)_Javascript_Jquery_Html - Fatal编程技术网

JavaScript/jQuery-识别表单输入的类型(即单选按钮、文本输入、下拉列表)

JavaScript/jQuery-识别表单输入的类型(即单选按钮、文本输入、下拉列表),javascript,jquery,html,Javascript,Jquery,Html,我试图让我的JS识别页面上可见的表单输入类型。我正在做一个小测验,当你按下“下一步”按钮时,它将显示下一个问题,只要上一个问题得到了回答。如果不是,则应显示警报。我试图让JS识别问题的输入类型,这样它就可以看到是否没有选中单选按钮,如果问题是单选按钮问题。但到目前为止,它将所有问题都视为文本和广播问题。我不知道我做错了什么。我已经做了好几个小时了 以下是JS小提琴: 代码如下: $("button").click(function() { if ($("input:visible [type

我试图让我的JS识别页面上可见的表单输入类型。我正在做一个小测验,当你按下“下一步”按钮时,它将显示下一个问题,只要上一个问题得到了回答。如果不是,则应显示警报。我试图让JS识别问题的输入类型,这样它就可以看到是否没有选中单选按钮,如果问题是单选按钮问题。但到目前为止,它将所有问题都视为文本和广播问题。我不知道我做错了什么。我已经做了好几个小时了

以下是JS小提琴:

代码如下:

 $("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认为它是。即使我选择了“否”,它也会在控制台日志中将答案记录为“是”。这可能是因为我没有预先准备表单“查找选择”。我会更新