【问题标题】:How to put multiple arguments inside OPTION for Javascript?如何在 OPTION for Javascript 中放置多个参数?
【发布时间】:2017-04-04 18:18:25
【问题描述】:

我通过 PHP 在 SQL 中创建了一个包含 3 列的表。我正在尝试以这种方式将值放入 SELECT 下拉列表中:

  • 第一列将在 OPTION 的值中(用于传递 POST)。
  • 第二列将显示在 OPTION 中。
  • 第三列将被隐藏并粘贴到下拉列表中的每一行,因此当用户从下拉列表中选择一个选项时,隐藏列将显示在其他 div 中。

例如,如果表是:

col1  col2  col3
-----------------
1     Joe   Key st.
2     Matt  Link st.

当用户选择 Joe 时,Key st. 将显示在一个单独的 div 中,用户按下回车后,1 的值将通过 POST 发送。

这是我目前得到的:

$('.foo3').on('change', function() {
  var add = $(this).parent().find('.foo3').value();
  $('.foo2').html(add);
});
<select class="foo3">
  <?php while ($curRow=mysqli_fetch_array($TableOutput)) {                                                      
    echo "<input class='foo' type='hidden' value='{$curRow['col3']}'><option value='{$curRow['col1']}'>{$curRow['col2']}</option>"; 
  } ?>
</select>
<div class="foo2"></div>

谢谢!

【问题讨论】:

  • 能否附上您的 HTML 输出?
  • 它不起作用。下拉菜单是空的。
  • @RuchishParikh 为什么要编辑我对这个问题的回答的 HTML?
  • 我已编辑将其转换为代码 sn-p。对不起,如果我错了。 @RoryMcCrossan
  • 可以编辑问题以包含 sn-p,但问题是您使用了我的答案中的 HTML,而不是 OP 的原始代码。以后请多多关照。

标签: javascript php jquery html select


【解决方案1】:

您可以使用data 属性将自己的元数据存储在元素中。然后,您可以在选择 option 时将其读出。试试这个:

$('.foo3').change(function() {
  $('.foo2').text($(this).find('option:selected').data('location'));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="foo3">
  <option>Please select...</option>
  <option value="1" data-location="Key St.">Joe</option>
  <option value="2" data-location="Link St.">Matt</option>
</select>
<div class="foo2"></div>

要创建 HTML 输出,您的 PHP 应如下所示:

echo "<option value=\"{$curRow['col1']}\" data-location=\"{$curRow['col3']}\">{$curRow['col2']}</option>";

【讨论】:

  • @RoryMcCrossan 将数据存储在 html 元素中好吗?会不会导致加载缓慢??
  • 绝对没问题,不会对性能产生任何明显影响。
  • 在页面上显示数据和将其加载到data-属性之间没有真正的区别。 HTML 代码有一个非常轻微的悬垂(可能),但它应该(在大多数情况下)最少,并且在加载时间上没有任何差异。
  • @junkfoodjunkie 还有 jQuery 构建缓存对象的开销,但同样的延迟是无限小的。如果性能如此重要,那么您根本不应该使用 jQuery。
  • @DvirNaim 使用相同的技术,只需添加另一个 data-XXX 属性并使用 data('XXX') 在 jQuery 中检索它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多