javascript - 如果var / string中存在var返回错误

时间:2017-12-25 22:34:51

标签: javascript jquery arrays

我有类似的东西

<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是否存在于数组中,但我遇到了问题,因为有多个值类型,用逗号分隔,也用空格分隔,也没有空格

1 个答案:

答案 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}));
}

&#13;
&#13;
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;
&#13;
&#13;