使用Javascript/jQuery更改表单响应
我在我的网站上有一个表单,我只需要为输入几个邮政编码之一的人更改回复。我正在尝试设置代码,以便根据数组中保存的对象检查输入的邮政编码的前3位数字。它还没有完成,但我正在测试它,现在我正试图让zipValue在控制台中显示,一旦有人点击zip字段,但我没有任何运气让它工作。这就是我到目前为止所做的-使用Javascript/jQuery更改表单响应,javascript,jquery,arrays,forms,onblur,Javascript,Jquery,Arrays,Forms,Onblur,我在我的网站上有一个表单,我只需要为输入几个邮政编码之一的人更改回复。我正在尝试设置代码,以便根据数组中保存的对象检查输入的邮政编码的前3位数字。它还没有完成,但我正在测试它,现在我正试图让zipValue在控制台中显示,一旦有人点击zip字段,但我没有任何运气让它工作。这就是我到目前为止所做的- let inLA = false; var zipsLA = ["700, 701, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 714"];
let inLA = false;
var zipsLA = ["700, 701, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 714"];
const $zipField = document.getElementById('formFieldZip')
const $zipValue = document.getElementById('formFieldZip').value
$zipField.addEventListener('blur', function(){
console.log(zipValue);
});
我最终的希望是,如果输入的邮政编码的前3位与数组中的一个条目匹配,它将“inLA”设置为true
编辑:Fiddle链接:问题是您在开始时获取输入值(未定义)。它不会在事件列表中更新 从eventListener中的输入获取值 用这个,
var inLA = false;
var zipsLA = ["700", "701", "703", "704"];
const $zipField = document.getElementById('formFieldZip');
$zipField.addEventListener('blur', function(){
console.log($zipField.value);
(zipsLA.indexOf($zipField.value) > -1) ? console.log('zip matched') : console.log('no match');
});
你也有很多语法错误。请参阅上面的评论。尝试以下内容:
let inLA=false;
zipsLA变量=[“700”、“701”、“703”、“704”、“705”、“706”、“707”、“708”、“710”、“711”、“712”、“713”、“714”];
const$zipField=document.getElementById('formFieldZip');
$zipField.addEventListener('blur',function(){
if(zipsLA.indexOf(this.value.slice(0,3))!=-1){
inLA=真;
}否则{
inLA=假;
}
控制台日志(inLA);
});代码>
问题是您试图在加载DOM元素之前访问它
小提琴显示您正在使用onLoad,而您应该使用ready
也更新了你的小提琴
一旦DOM就绪,就可以查询DOM中的元素,并向其中添加事件侦听器
如果您正在为jquery的document ready寻找纯JS替代方案,您可以使用此解决方案。您是否有一把小提琴来演示示例?请尝试改进您的问题。你知道你在干什么吗?让vs var?,数组定义不是真正的数组(只有一个元素)。变量处的前导$-符号。。。为什么?在未定义的对象($zipField unqualized zipField)处添加了EventListener。。。请检查您的代码,并自行删除此类错误。这些是解析错误(您的控制台应该向您显示一些错误。请修复它们)是文档内部的addEventListener。准备好了吗?@practice2perfect添加了一个小提琴链接,我尝试了文档内外的addEventListener。准备好了吗,它似乎没有什么问题difference@practice2perfect为什么addEventListener需要在document.ready中?你看到这个问题中使用了jQuery吗?试试这个,谢谢。到目前为止,它说没有匹配,尽管它应该匹配,但它越来越接近了。你不需要将它放在window.onload中。您可以在正文末尾添加一个脚本,并将这段代码放在那里。如果您使用的是jQuery,请在document.ready中添加代码。
$( document ).ready(function() {
const $zipField = document.getElementById('formFieldZip')
const $zipValue = document.getElementById('formFieldZip').value
$zipField.addEventListener('blur', function(){
console.log($zipField.value);
});
});