如何检测html输入对象是否是按钮?

时间:2015-03-17 01:11:14

标签: javascript jquery html

我正在努力尝试从表单中提取输入,不包括按钮,而不是单选按钮。我通过表单元素的.find()方法获取输入。我有输入,但无法将它们限制为仅提交按钮或类似按钮以外的输入。我已经尝试了jquery .is(),. type(),两者都没有运气,任何建议/参考都会有所帮助,因为我还没有找到任何帮助。这是我用来提取表单的代码。

 var inputs = formList.find(":input");


        if (inputs ? inputs.length > 0 : false)
        {
          for(j = 0;j < inputs.length; j++)
          {
              console.log("input: " + inputs[j]);
              if (inputs[j].name != "")
              { 
                 webForms.push({"inputName": inputs[j].name});  
              }else if (inputs[j].id != "")
              {
                 webForms.push({"inputName": inputs[j].id});  
              } 
          } 
        }

就像我说的那样,我试过了.is和.type而没有运气。这是我如何使用.is()

的示例
var formList = $("form");
var formName = $("form").attr("name");
if (formList != null ? formList.length > 0 : false)
{
  if (formList.length < 2)
  {
    if (formList.attr("name") ? formList.attr("name") != "" : false)
    {
      //alert("form name is not null");
        //alert("form name: " + formList.attr("name"));
        var webForms = [];
        //alert("formList name: " + formList[i]);
        var inputs = formList.find(":input");


        if (inputs ? inputs.length > 0 : false)
        {
          for(j = 0;j < inputs.length; j++)
          {
              console.log("input: " + inputs[j]);
              if (inputs[j].name != "")
              { 
                 if(inputs[j].is(":button"))
                 {
                     console.log(inputs[j].name + " is a button");
                 }
                 webForms.push({"inputName": inputs[j].name});  
              }else if (inputs[j].id != "")
              {
                 if(inputs[j].is(":button"))
                 {
                     console.log(inputs[j].name + " is a button");
                 }
                 webForms.push({"inputName": inputs[j].id});  
              } 
          } 
        }
        //alert(JSON.stringify(webForms));
        jsonForm.forms[jsonForm.forms.length - 1].name = formList.attr("name");
        //alert("json form name: " + JSON.stringify(jsonForm));
        jsonForm.forms[jsonForm.forms.length - 1].inputs = webForms;
        //alert("name: " + jsonForm.forms[jsonForm.forms.length - 1].name);    
    }

  }

此处的任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码获取buttoninput s的输入元素,其type属性为“submit”。

 var inputs = formList.find(':input:not(button, [type="submit"])');

Here是一个现场演示。

答案 1 :(得分:1)

问题是inputs[i]返回dom元素引用而不是jQuery包装器对象,因此它没有可以使用的is方法

inputs.eq(i).is(':button')

我建议使用.each()循环迭代jQuery对象而不是使用循环

        var inputs = formList.find(":input");

        inputs.each(function () {
            var $input = $(this);
            console.log("input: " + this);
            if (this.name != "") {
                if ($input.is(":button")) {
                    console.log(this.name + " is a button");
                }
                webForms.push({
                    "inputName": this.name
                });
            } else if (this.id != "") {
                if ($input.is(":button")) {
                    console.log(this.name + " is a button");
                }
                webForms.push({
                    "inputName": this.id
                });
            }
        })

这甚至可以简化为

        var inputs = formList.find(":input");

        inputs.each(function () {
            var $input = $(this);
            console.log("input: " + this);

            var name = this.name || this.id;
            if (name != "") {
                if ($input.is(":button")) {
                    console.log(name + " is a button");
                }
                webForms.push({
                    "inputName": name
                });
            }
        })