我有类似的东西
<input name="ip" id="ip">
此ip需要添加到包含此格式的多个ips的ips列表中
<select id="iplist" name="iplist">
<option value="192.168.1.2">192.168.1.2</option>
<option value="192.168.1.10 - admin">192.168.1.10 - admin</option>
<option value="192.168.2.2 - test">192.168.2.2 - test</option>
<option value="192.168.2.9 - test1">192.168.2.9 - test1</option>
</select>
和选择列表中的许多其他值(不仅是列出的值),当执行按钮并且需要将ip添加到select选项时我需要检查ip是否已经在列表中,如果不是返回错误,
所以我有类似的东西来获取值
var iplist = $.map($('#iplist option'), function(e) { return e.value; });
和console.log显示数组中的所有值
console.log(iplist);
要将值作为字符串获取,我可以使用
var str = iplist.join(',');
但是我很难确认ip是否已经在选择列表中。
非常感谢任何帮助,请提前感谢您花时间研究这个问题。 我正在考虑使用正则表达式来验证ip是否存在于数组中,但我遇到了问题,因为有多个值类型,用逗号分隔,也用空格分隔,也没有空格
答案 0 :(得分:0)
假设有一个按钮,它不在你显示的html中,你可以使用下面的代码。使用的正则表达式来自另一个Stackoverflow帖子(请参阅Extract ip address from a string using regex )
var r = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/;
var inputvalue = document.getElementById("ip").value;
inputvalue = inputvalue.match(r);
if(!inputvalue){
return console.log("bad input");
}
inputvalue = inputvalue[0];
if($("select#iplist option").filter(function(){return $(this).val().match(r)[0] === inputvalue}).length){
console.log("exists");
}else{
$('select#iplist').append($('<option>', {value: inputvalue, text: inputvalue}));
}
function myFunction(){
var r = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/;
var inputvalue = document.getElementById("ip").value;
inputvalue = inputvalue.match(r);
if(!inputvalue){
return console.log("bad input");
}
inputvalue = inputvalue[0];
if($("select#iplist option").filter(function(){return $(this).val().match(r)[0] === inputvalue}).length){
console.log("exists");
}else{
$('select#iplist').append($('<option>', {value: inputvalue, text: inputvalue}));
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<select id="iplist" name="iplist">
<option value="192.168.1.2">192.168.1.2</option>
<option value="192.168.1.10 - admin">192.168.1.10 - admin</option>
<option value="192.168.2.2 - test">192.168.2.2 - test</option>
<option value="192.168.2.9 - test1">192.168.2.9 - test1</option>
</select>
<input name="ip" id="ip"/>
<button onclick="myFunction()">add</button>
</body>
&#13;