我正在试图弄清楚如何动态过滤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
答案 0 :(得分:4)
以这种方式:
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;
或者:
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;
答案 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
语句。