【问题标题】:Jquery get form field valuejQuery获取表单字段值
【发布时间】:2012-07-24 03:54:58
【问题描述】:

我正在使用 jquery 模板在同一页面上动态生成多个元素。每个元素看起来像这样

<div id ="DynamicValueAssignedHere">
    <div class="something">Hello world</div>
    <div class="formdiv">
        <form name="inpForm">
            <input type="text" name="FirstName" />
            <input type="submit" value="Submit" />
        </form>
    </div>
</div>

我想使用 Jquery 来处理提交时的表单。如果出现问题,我还想将表单值恢复为以前的值。我的问题是 如何使用 Jquery 获取输入框的值?例如,我可以通过做得到类“某事”的 div 的值

var something = $(#DynamicValueAssignedHere).children(".something").html();

以类似的方式,我希望能够检索文本框的值。现在,我试过了

var text = $(#DynamicValueAssignedHere).children(".formdiv").findnext('input[name="FirstName"]').val();

但它似乎不起作用

【问题讨论】:

  • 这一次,纯 javascript 可能更容易:$('input')[0].form.FirstName.value 将访问该字段的值

标签: javascript jquery


【解决方案1】:

它可以比你正在做的简单得多。

HTML:

<input id="myField" type="text" name="email"/>

JavaScript:

// getting the value
var email = $("#myField").val();

// setting the value
$("#myField").val( "new value here" );

【讨论】:

  • 我不能为该字段使用 ID,因为我的页面可以包含具有相同元素的多个表单(我正在使用 jquery 转发器模板)
  • @curiouspanda:好的,所以你可以使用 Dipaks 方法来做到这一点。即使使用转发器模板,我认为您可以使用唯一的 id,也许为每个字段集组件 id 设置一个前缀。
  • @curiouspanda 动态 ID 有什么共同点吗?
  • 这应该是答案。干净得多。
  • 如果我应该从其他页面的表单中获取值呢?
【解决方案2】:

你必须使用value attribute 来获取它的值

<input type="text" name="FirstName" value="First Name" />

试试 -

var text = $('#DynamicValueAssignedHere').find('input[name="FirstName"]').val();

【讨论】:

  • @curiouspanda:只是小费。如果“名称”值是唯一的,则不需要使用 $('#DynamicValueAssignedHere')。直接使用 $('input[name="FirstName"]').val() 即可。我还是更喜欢使用 id 来处理组件。
  • @davidbuzatto - 名称值不是唯一的。只有最外层 div 的 ID 是唯一的。 Dipaks 解决方案虽然有效。
  • 这里有一些信息和小提琴dipaksblogonline.blogspot.in/2018/05/…
【解决方案3】:

如果你知道输入的 id,你只需要使用这个:

var value = $("#inputID").val();

【讨论】:

    【解决方案4】:
    var textValue = $("input[type=text]").val()
    

    这将获取所有文本框的所有值。您可以使用 children、firstchild 等方法来磨练。喜欢通过形式 $('form[name=form1] input[type=text]') 更容易使用 ID 来定位元素,但如果它是纯动态的,您可以获取所有输入值,然后使用 JS 循环遍历。

    【讨论】:

      【解决方案5】:

      另一种方法,无需搜索字段 html:

      var $form = $('#' + DynamicValueAssignedHere).find('form');
      var formData = $form.serializeArray();
      var myFieldName = 'FirstName';
      var myFieldFilter = function (field) {
        return field.name == myFieldName;
      }
      var value = formData.filter(myFieldFilter)[0].value;
      

      【讨论】:

        【解决方案6】:

        $("form").submit(function(event) {
            
              var firstfield_value  = event.currentTarget[0].value;
             
              var secondfield_value = event.currentTarget[1].value; 
             
              alert(firstfield_value);
              alert(secondfield_value);
              event.preventDefault(); 
             });
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <form action="" method="post" >
        <input type="text" name="field1" value="value1">
        <input type="text" name="field2" value="value2">
        </form>

        【讨论】:

        • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性 cmets 挤满你的代码,因为这会降低代码和解释的可读性!
        【解决方案7】:

        您可以尝试以下几行:

        $("#DynamicValueAssignedHere .formdiv form").contents().find("input[name='FirstName']").prevObject[1].value
        

        【讨论】:

          【解决方案8】:

          您可以通过以下方式获取任何输入字段值 $('input[fieldAttribute=value]').val()

          这是一个例子

          displayValue = () => {
          
            // you can get the value by name attribute like this
            
            console.log('value of firstname : ' + $('input[name=firstName]').val());
            
            // if there is the id as lastname
            
            console.log('value of lastname by id : ' + $('#lastName').val());
            
            // get value of carType from placeholder  
            console.log('value of carType from placeholder ' + $('input[placeholder=carType]').val());
          
          }
          <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
          <div class="formdiv">
              <form name="inpForm">
                  <input type="text" name="firstName" placeholder='first name'/>
                  <input type="text" name="lastName" id='lastName' placeholder='last name'/>
                  
                  <input type="text" placeholder="carType" />
                  <input type="button" value="display value" onclick='displayValue()'/>
                  
              </form>
          </div>

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-09-15
            • 1970-01-01
            • 1970-01-01
            • 2012-07-12
            • 2011-03-12
            • 2012-06-04
            • 1970-01-01
            相关资源
            最近更新 更多