【问题标题】:Sorting a dropdown list with javascript?用javascript对下拉列表进行排序?
【发布时间】:2015-11-20 10:53:39
【问题描述】:

我有这个下拉列表,但选项设置的顺序不正确。有没有办法使用 javascript 对它们进行排序(我猜是基于它们的值)?

<select class="required" name="payment_gateway">
<option value="bank-transfer">Bank</option>
<option value="pay-social">Social</option>
<option value="paypal">PayPal</option>
<option value="pronamic_ideal">iDEAL</option>
</select>

所需的排序是:

<select class="required" name="payment_gateway">
<option value="pay-social">Social</option>
<option value="pronamic_ideal">iDEAL</option>
<option value="bank-transfer">Bank</option>
<option value="paypal">PayPal</option>
</select>

【问题讨论】:

  • 我强烈推荐jQuery,如果你不会,看第二个答案:stackoverflow.com/questions/667010/…
  • 实际上我希望“付费社交”成为第一选择。
  • 您想在什么条件下订购该清单?自定义或例如按字母顺序?
  • 这里没有足够的信息来提供帮助。您目前如何输出选择选项?目前尚不清楚您不能只是重新排序您的 HTML。

标签: javascript sorting drop-down-menu


【解决方案1】:

这里是一个工作示例

<select class="required" name="payment_gateway"><option value="pay-social">Social</option><option value="pronamic_ideal">iDEAL</option><option value="bank-transfer">Bank</option><option value="paypal">PayPal</option></select>

http://jsfiddle.net/snayps/tdh9up7h/

【讨论】:

  • 谢谢,但我不确定你的意思。在小提琴示例中,选项已经在 html.. 中排序
【解决方案2】:

这似乎有效,但是仍然选择了错误的选项。

$('.required option[value="pay-social"]').insertBefore('.required option[value="bank-transfer"]');

【讨论】:

  • 这可以通过以下方式修复:$("form.formcustsort .required").prop("selectedIndex", 0);
【解决方案3】:

试着这样写

var $dropdown = $('.required'),
    $items = $dropdown.children('option');


$items.sort(function(a, b){
    var an = a.value,
        bn = b.value;
    if (an > bn) {
        return 1;
    }
    if (an < bn) {
        return -1;
    }
    return 0;
});
$items.detach().appendTo($dropdown);

【讨论】:

  • 您好,非常感谢您的回复。然而,这并没有改变顺序。一切都保持不变。
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 2023-03-03
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 2010-12-14
相关资源
最近更新 更多