jQuery为已经工作的脚本创建多个实例

时间:2011-08-22 01:21:05

标签: jquery html forms html-table

我几天前问了一个问题,@ RustyTheBoyRobot很友好地回答了。

以下代码100%正常工作,但我需要一种方法在页面上添加多个“查找地址”按钮。一个用于街道地址,一个用于邮政地址。

有人能告诉我如何在不重复模态框和Javascript的情况下实现这一目标吗?

UPDATE:经过一些测试后,我想出了我需要做什么,我需要一些方法将一个变量从Buttons传递到表模态形式,所以当我点击一行时它只更新了我指定的表单字段。

代码

我在带有表格的模态框中创建了一个表单。当您单击表格行时,它会在父页面上填充表单。

模态框

<div id="modal_form" title="Address Search">
<form id="address_search">
    <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 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">Mt Wellington</td>
                    <td class="address_city">Auckland City</td>
                  </tr>
                  <tr id="row3">
                    <td class="address_street">Kauri Road</td>
                    <td class="address_suburb">Westfordshire</td>
                    <td class="address_city">Palmerston North</td>
                  </tr>
            </tbody></table><!-- /table#table-data -->
        </form>
</div><!-- /div#modal_form -->

的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() );
  $("#modal_form").dialog('close');
    });
  });
</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>

2 个答案:

答案 0 :(得分:2)

简而言之,您可以考虑制作一个jquery插件。

如果您想出一种使用特定按钮识别地址字段的统一方法,jquery插件可以自动计算出正确的字段等等。

这是一个不错的教程:

http://www.authenticsociety.com/blog/jQueryPluginTutorial_Beginner

答案 1 :(得分:0)

我最终使用jquery根据你点击的按钮向表td添加不同的类名。

守则

<script type="text/javascript">
$(document).ready(function() {
$('#find_address').click(function(){
$('#modal_form').dialog('open');
$('table#table-data_classy').attr( 'id', 'table-data' );   $('td.address_street_classy').removeClass("address_street_classy").addClass("address_street");    $('td.address_suburb_classy').removeClass("address_suburb_classy").addClass("address_suburb");
$('td.address_city_classy').removeClass("address_city_classy").addClass("address_city");
}); //end click handler
$('#find_address_classy').click(function(){
$('#modal_form').dialog('open');
$('table#table-data').attr( 'id', 'table-data_classy' );
$('td.address_street').removeClass("address_street").addClass("address_street_classy");
$('td.address_suburb').removeClass("address_suburb").addClass("address_suburb_classy");
$('td.address_city').removeClass("address_city").addClass("address_city_classy");
}); //end click handler
}); //end ready event
</script>


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

<script type="text/javascript">
  $(document).ready(function() {
    $('#table-data_classy tr').live('click',function () {
      var curRowClass = $(this).attr("class");
      $('#street_name_classy').val( $('.' + curRowClass + ' td.address_street_classy').text() );
      $('#suburb_classy').val( $('.' + curRowClass + ' td.address_suburb_classy').text() );
      $('#city_classy').val( $('.' + curRowClass + ' td.address_city_classy').text() );
      $("#modal_form").dialog('close');
    });
  });

干杯