【问题标题】:jQuery dynamic fill in form fields with table datajQuery用表格数据动态填充表单字段
【发布时间】:2011-10-30 05:53:44
【问题描述】:

我在带有表格的模式框中创建了一个表单。当您单击表格行时,它会在父页面上填充一个表单。这很好用,但是当我单击另一个表行时,我无法更改值。因为我使用的是 ID,所以它只获取第一个表行中的值。我愿意改班,但我试过了,但没有帮助。

请任何人帮助我解决这个问题。代码如下。

带表格的模态形式

<div id="modal_form" title="Address Search">
<form id="modal_form">
<ul>
    <li><label for="name">Search by street description</label>
        <input type="text" name="street_description" id="street_description" />
        <input type="button" id="search_button" class="form_button" value="Search"></li>
</ul>
<table width="100%" border="0" cellspacing="0" cellpadding="0" id="table-data">
              <tbody><tr>
                <td width="200px"><a href="#">Street</a></td>
                <td width="200px"><a href="#">Suburb</a></td>
                <td width="200px"><a href="#">City</a></td>
              </tr>
              <tr>
                <td id="address_street">Harambee Road</td>
                <td id="address_suburb">Onerai </td>
                <td id="address_city">Onerai Rural</td>
              </tr>
              <tr>
                <td id="address_street">Hutchinson Road</td>
                <td id="address_suburb">Onerai </td>
                <td id="address_city">Onerai Rural</td>
              </tr>
              <tr>
                <td id="address_street">Kauri Road</td>
                <td id="address_suburb">Onerai </td>
                <td id="address_city">Onerai Rural</td>
              </tr>
        </tbody></table><!-- /table#table-data -->
</form>

Javascript(这是我需要区分表格行的地方)

<script type="text/javascript">
$(document).ready(function() {
$('#table-data tr').click(function () {
$('#street_name').val( $('#address_street').text() )
$('#suburb').val( $('#address_suburb').text() )
$('#city').val( $('#address_city').text() )})
});
</script>

父表单,其中填充表单字段

<form id="profile">
<ul>
<li><label for="street_number">Street Number</label><input id="street_number" type="text" placeholder="Street Number" name="street_number" ><input type="button" class="form_button" id="find_address" value="Find Address"></li>
<li><label for="street_name">Street Name</label><input id="street_name" type="text" placeholder="Street Name" name="street_name"  disabled="disabled" ></li>
<li><label for="suburb">Suburb</label><input id="suburb" type="text" placeholder="Suburb" name="suburb"  disabled="disabled" ></li>
<li><label for="city">City</label><input id="city" type="text" placeholder="City" name="city" disabled="disabled" ></li>
<li><input type="submit" id="submit" value="Save"></li>
</ul>
</form>

感谢您提供的任何帮助,干杯

【问题讨论】:

    标签: jquery html forms html-table


    【解决方案1】:

    ID 必须是唯一的,所以这是行不通的:

    <td id="address_street">Harambee Road</td>
    ...
    <td id="address_street">Hutchinson Road</td>
    

    我会给每个一个ID,并让所有列使用相同的

    <tr id="row1">
      <td class="address_street">Harambee Road</td>
      <td class="address_suburb">Onerai </td>
      <td class="address_city">Onerai Rural</td>
    </tr>
    <tr id="row2">
      <td class="address_street">Hutchinson Road</td>
      <td class="address_suburb">Onerai </td>
      <td class="address_city">Onerai Rural</td>
    </tr>
    <tr id="row3">
      <td class="address_street">Kauri Road</td>
      <td class="address_suburb">Onerai </td>
      <td class="address_city">Onerai Rural</td>
    </tr>
    

    你的 JavaScript 会变成这样:

    <script type="text/javascript">
      $(document).ready(function() {
        $('#table-data tr').click(function () {
          var curRowId = $(this).attr("id");
          $('#street_name').val( $('#' + curRowId + ' td.address_street').text() );
          $('#suburb').val( $('#' + curRowId + ' td.address_suburb').text() );
          $('#city').val( $('#' + curRowId + ' td.address_city').text() );
        });
      });
    </script>
    

    【讨论】:

    • 谢谢,知道如何修改我的 javascript 以合并您的解决方案。我仍然是初学者,为了使用您的解决方案,我将创建多个脚本,仅针对每个行 ID。我知道必须有一种更简单的方法来做到这一点,有什么建议吗?谢谢
    • 抱歉无视我上面的评论,我显然是在你忙的时候评论的,我现在试试你的代码,再次感谢:)
    • @Clinton:抱歉,我错过了 JavaScript 中的一些空格;已更新。
    • GENIUS - 非常感谢所有的帮助和努力,我真的很努力解决这个问题,以后我会尝试更多地使用 var。干杯:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多