javascript - 将输入的 ipaddress 值与 laravel 中多选框的值进行比较?

标签 javascript php laravel

查看代码:

<div class="box-body">
    <div class="form-group">
        <label for="inputPassword3" class="col-sm-2 control-label">Version</label>

        <div class="col-sm-10">
            <input type="text" class="form-control"
                   name="versions" id="versions" placeholder="Eg. 5.9.158.65" 
                   onchange='validate(this.value)'>
        </div>
    </div>
</div>

这是我手动输入 IP 地址的输入字段。 在输入此字段的值时,我需要检查多选框中的值(如下所述)是否低于输入的 IP 地址格式。

脚本代码:

<script type='text/javascript'>
    var octet = '(?:25[0]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])';
    var ip = '(?:' + octet + '\\.){3}' + octet;
    var quad = '(?:\\[' + ip + '\\])|(?:' + ip + ')';
    var ipRE = new RegExp('(' + quad + ')');

    function validate(value) {
        if (ipRE.test(value)) {
            alert('"' + RegExp.$1 + '"');
        } else {
            alert('Invalid version format');
        }
    }
</script>

这里我使用正则表达式验证输入的 IP 地址格式。

相同的 View 代码:

<div class="box-body">
    <div class="form-group">
        <label for="inputPassword3" class="col-sm-2 control-label">Target Versions(Supported Versions)</label>

        <div class="col-sm-10">
            <select multiple="multiple" class="form-control" name="serial-lists[]" id="serial-lists" onchange='multiselect()'>
                <option value="1.0.0.8">1.0.0.8</option>
                <option value="1.0.0.2">1.0.0.2</option>
                <option value="1.0.0.3">1.0.0.3</option>
                <option value="1.0.0.4">1.0.0.4</option>
                <option value="1.0.0.5">1.0.0.5</option>
                <option value="1.0.0.6">1.0.0.6</option>
                <option value="1.0.0.7">1.0.0.7</option>
            </select>
        </div>
    </div>
</div>

该字段是支持的版本字段,是多选框。

脚本代码:(我尝试比较这两个字段的代码)

<script>
    function multiselect() {
        var selectedValues = $('#serial-lists').text();
        var versions = document.getElementById('versions');
        if (selectedValues > versions)
            alert("not valid");
        else if (selectedValues < versions)
            alert("valid");
    }
</script>

但是它不起作用。而且我认为这也没有效率。

最佳答案

尝试如下比较函数。

<script>
    function multiselect() {
    var opts = $('#serial-lists')[0].options;
    var selectedValues = $.map(opts, function(elem) {
        return (elem.value || elem.text);
    });
    var versions = $('#versions').val();
    for(var i=0; i<selectedValues.length;i++){
        if (selectedValues[i] > versions)
            alert("not valid");
        else if (selectedValues < versions)
            alert("valid");
    }
}
</script>

关于javascript - 将输入的 ipaddress 值与 laravel 中多选框的值进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45005942/

相关文章:

javascript - 如何将 Laravel 变量传递到我的 AngularJS View 中?

javascript - 为什么我的 ng-model 在 Firefox 中不使用 Typeahead 更新?

php - 我可以将 $variable 转换为表格吗?

javascript - D3 albersUsa 投影函数返回 null

php - 检查值是否已存在于行而不是列单元格中

php - 为在 CakePHP 2 中使用 AuthComponent 的 Controller 编写单元测试

php - Laravel With 和 wherePivot

php - undefined variable :$ Laravel 5

javascript - 在 SPA VueJS 中全局声明 mapState 和 mapMutations

javascript - 为什么 ZeroClipboard 在第二次单击时起作用?