2017-02-22 19 views
0

有一个选择框。和一个具有特定模式的主机名的文本框。在这种情况下,当我的选择框更改文本框的模式时会发生变化。我的问题是我如何检查身体的选择框值onload?并检查图案?例如,如果选择框最初是“Nx”。我想检查模式。当选择框更改值更改时。如何在页面加载后检查输入的正则表达式属性

这里是我的代码,只能选择框电平变化的:

$(function(){ 
 
    $('select[name=type]').change(function(){ 
 
    var $option = $(this).find(":selected"); 
 
    $('input[name=hostInput]').attr('pattern', $option.attr('data-pattern')); 
 
    $('input[name=hostInput]').attr('placeholder', $option.attr('data-placeholder')); 
 
    $('input[name=hostInput]').attr('title', $option.attr('data-title')); 
 
    }); 
 
});
.to_validate:invalid { 
 
    color: navy; 
 
    outline: none; 
 
    border-color: #ff1050; 
 
    box-shadow: 0 0 10px #ff0000; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<form> 
 
    <select name="type" class="minimal"> 
 
    <option value="Record" hidden>Record</option> 
 
    <option value="NS" selected data-pattern="(?!\d+(?:\.\d+){3}$)(([a-zA-Z\d]|[a-zA-Z\d][a-zA-Z\d-]*[a-zA-Z\d])\.)*([A-Za-z\d]|[A-Za-z\d][A-Za-z\d-]*[A-Za-z\d])" data-placeholder="Hostname" data-title="Wrong host">NS</option> 
 
    <option value="MX" data-pattern="(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" data-placeholder="IP address" data-title="Wrong Ip Placeholder">MX </option> 
 
    </select> 
 
    
 
    <br/> 
 
    
 
    <input type="text" name="hostInput" placeholder="Hostname" class="to_validate" title="Wrong host"/> 
 
    
 
    
 
    <button type="submit">Submit</button> 
 
</form>

+0

' $('select [name = type]')。change(function(){...})。change();' – Tushar

+0

@Tushar这段代码是什么?在'change()'的末尾加上'.change()' – inaz

+0

。这将触发事件和事件处理程序将在页面加载时被调用。 – Tushar

回答

1

尝试在你的JavaScript添加这些。

$(function() { 
    var value= $('select[name=type]').val(); 
    var pattern = $('select[name=type] option:selected').data('pattern'); 

    $('input[name=hostInput]').attr('pattern', pattern); 
    $('input[name=hostInput]').val(value); 
}); 
+0

如何将复选框的值和模式传递给输入框?你写的这段代码不适用于这个? – inaz

+0

对不起,如果还有其他问题。例如一个用于“MX”,另一个用于“Ns”我如何使用此代码?因为此代码将重复所有行的模式。 – inaz

+0

对不起,我不明白你的新问题。您可以根据您详细询问的内容创建一个新问题。 – mhshimul

0

jQuery的有法。就绪()时HTML body元素是负载,并准备叫..所以,你可以在这里link

$(document).ready(function() { 
    var checkedVal = $("select[name=type]").val(); 
}); 

检查更新

$(document).ready(function() { 
    var checkedVal = $("select[name=type]").val(); 
    var patterns = { 
    "NS":"(?!\d+(?:\.\d+){3}$)(([a-zA-Z\d]|[a-zA-Z\d][a-zA-Z\d-]*[a-zA-Z\d])\.)*([A-Za-z\d]|[A-Za-z\d][A-Za-z\d-]*[A-Za-z\d])", 
    "MX":"(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])" 
    } 

    patterns[checkedVal].test($('input[name=hostInput]').val());//if it is true the input is valid 
}); 
+0

将代码放在.ready()上是一种很好的做法,通过这种方式确保在执行代码之前所有html元素都可用 –