javascript - 使用 Loop through array vaiable 在更改事件上触发 HTML
问题描述
我将一个数组变量从 PHP 传递给 JavaScript。我在 JavaScript 控制台中的变量内容是:
[
{
"function": "change",
"parameter": "link",
"err_msg": "It seems your input is not valid",
"id": "element1"
},
{
"function": "change",
"parameter": "check",
"err_msg": "please enter a valid input",
"id": "element2"
}
]
我想知道是否可以使用此变量在 element1 和 element2 元素的更改事件上触发 JavaScript/jquery?
我为此使用以下代码,但不起作用。
jQuery.each( passed_variable, function( key, element ) {
jQuery( '#' + element.id + '-source' ).on( element.function, function() {
switch ( element.parameter ) {
case 'link' :
reg_match = new RegExp('^<.* rel=("|\').*("|\') .*href=("|\').*("|\').*>$');
if ( ! reg_match.test(element.value) ) {
this.setCustomValidity( validation.err_msg );
this.reportValidity();
} else {
this.setCustomValidity('');
}
}
});
});
解决方案
let arr = [
{
"function": "change",
"parameter": "link",
"err_msg": "It seems your input is not valid",
"id": "element1"
},
{
"function": "change",
"parameter": "check",
"err_msg": "please enter a valid input",
"id": "element2"
}
];
arr.map((element) => {
//console.log(element);
let dom_element = document.getElementById(`${element.id}-source`);
//console.log(dom_element);
dom_element.addEventListener(element.function, function(e) {
//console.log(e)
switch ( element.parameter ) {
case 'link' :
console.log('link');
reg_match = new RegExp('^<.* rel=("|\').*("|\') .*href=("|\').*("|\').*>$');
if ( ! reg_match.test(element.value) ) {
//this.setCustomValidity( validation.err_msg );
//this.reportValidity();
}else {
//this.setCustomValidity('');
}
break;
case 'check':
console.log('check');
break;
}
})
});
<input id="element1-source" type="text" placeholder="link">
<input id="element2-source" type="text" placeholder="check">
推荐阅读
- google-chrome-extension - 无需单击即可自动执行 chrome 扩展
- html - 如何使用引导程序在一行中的列之间垂直间隔
- config - 如何在工作台模式下创建可视化图形配置
- python - 如何在 python opencv 上启用自动曝光
- css - 地图内的样式化组件道具
- pandas - 在 pandas 数据框中搜索特定值并在其上写入条件
- javascript - Axios MySql DELETE/UPDATE 不工作或提供错误
- javascript - 我希望我的 window.open 带有 jQuery 中的 post 请求
- vue.js - 重试超时:cy.type() 失败,因为此元素不可见。具有 CSS 属性: position: fixed 并且它被另一个元素覆盖:
- flutter - 这里不允许使用 android:icon 属性。我有这个我无法解决的问题,当我尝试运行我的应用程序时,它不允许我