2017-10-14 134 views
1

我对JS和HTML非常陌生,所以我很抱歉。 我尝试使用pattern =''属性验证表单字段的输入时遇到了麻烦。虽然它会捕获无效输入并提供相应的错误消息,但后续输入修改不会更改错误消息。例如,无法获得输入字段的值JS

pattern="[a-zA-Z]"将生成适当的消息,如果用户在该字段中输入“testing2”。但是,如果用户将条目编辑为“测试”,我仍然会收到验证错误。

在试图解决这个问题时,我试图将输入栏输入到控制台。 所以,在HTML:

<input class="dest_one_key" name="dest_one_key" type="text" id="dest_one_key" required="" placeholder="Work">

然后:

<script> var v = document.getElementById('dest_one_key').value; document.getElementById('dest_one_key').addEventListener('change', function() { console.log(价值:$ {V} ); }); </script>

...这yeilds

“值:”

在控制台中。 所以表单似乎并没有捕获用户的输入。

我在做什么错了: 1)无法正确注册用户有效输入后输入无效 2)记录该字段的值到控制台?

+0

我想你想要的东西了这样的事:https://stackoverflow.com/questions/20287650/html5-input-validate-letters-and-numbers?answertab =活动 – jgatjens

+0

下面是一个简单的例子: https://jsbin.com/natociy/2/edit?html,js,console,output – jgatjens

+0

是的!这解决了接受用户编辑页面的问题。 (我搜遍了整个地方,这从来没有提到的正则表达式)。为什么我会遇到问题2)? – sarkon

回答

1

由于您的脚本只运行一次,因此v变量将为空。你需要在你的活动中使用event.target.value来改变它。就像这样:

var v; 
 

 
document.getElementById('dest_one_key').addEventListener('change', function(event) { 
 
    v = event.target.value; 
 
    console.log('Value: ' + v); 
 
});
<input class="dest_one_key" name="dest_one_key" type="text" id="dest_one_key" required="" placeholder="Work">