使用jQuery过滤SELECT列表

时间:2015-03-27 13:29:28

标签: jquery

我正在试图弄清楚如何动态过滤SELECT列表。

我有一个这样的清单:

<div class="domainreginput" id="domainexisting_domain">
<select id="incartsld">
<option value="example.com">example.com</option>
<option value="example2.com">example2.com</option>
<option value="example.net">example.net</option>
<option value="example.rocks">example.rocks</option>
</select> <input type="submit" value="Click to Continue >>" />
</div>

该列表可能包含任何扩展名的域名。但出于这个特殊目的,我只想显示具有某些TLD的域名。在这个例子中,让我们说.com和.net。

因此,如果我提供了允许的TLD列表,请执行以下操作:

var allowedTLD = [".com", ".net"];

如何使用jQuery从SELECT列表中删除没有与允许的数组中的TLD匹配的TLD的任何域?

我对jQuery很新,并试图寻找答案,但找不到任何类似的东西。

如果它有帮助,这是用于匹配允许域的实际正则表达式:

/\.(com|net|org|biz|info|name|tv|cc|me|pro|mobi|cm|co|ws)$/i

2 个答案:

答案 0 :(得分:4)

以这种方式:

&#13;
&#13;
var allowedTLD = [".com", ".net"];
$('#incartsld option').filter(function () {
    return !($.inArray('.'+$(this).val().split('.').pop(), allowedTLD) > -1)
}).remove()
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="domainreginput" id="domainexisting_domain">
    <select id="incartsld">
        <option value="example.com">example.com</option>
        <option value="example2.com">example2.com</option>
        <option value="example.net">example.net</option>
        <option value="example.bix">example.biz</option>
    </select>
    <input type="submit" value="Click to Continue >>" />
</div>
&#13;
&#13;
&#13;

或者:

&#13;
&#13;
var allowedTLD = /\.(com|net|org|biz|info|name|tv|cc|me|pro|mobi|cm|co|ws)$/i;
$('#incartsld option').filter(function() {
  return ($(this).val().match(allowedTLD) == null)
}).remove()
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="domainreginput" id="domainexisting_domain">
  <select id="incartsld">
    <option value="example.com">example.com</option>
    <option value="example2.com">example2.com</option>
    <option value="example.net">example.net</option>
    <option value="example.bix">example.biz</option>
  </select>
  <input type="submit" value="Click to Continue >>" />
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个:

$.each($('#incartsld > option'), function(index,o)
{
    if(!$(o).val().match(/\.(com|net|org|biz|info|name|tv|cc|me|pro|mobi|cm|co|ws)$/i))
    {
        $(o).remove();
    }
});

我对正则表达式没有经验,因此您可能需要稍微改变if语句。