动态输入文本框 ID 与正则表达式格式不匹配. 显示未定义



>我有一个动态输入框,具有以下id,points0,points1,points2等。我想确保这些输入框仅与数字匹配。所以我使用了以下代码,但在控制台中它总是显示

类型错误: $(...(。val(...( 未定义

所以我使用了以下代码。我正在循环输入文本框。

var result = document.getElementsByTagName("input");
for (var j = 0; j < result.length; j++) {
var points = 'Enter a valid point.';
var regex = '/^[A-Za-z!@#></!?$%^&*)(+=._-]+$/g';
if ($("#points" + j).val().match(regex)) {
$('#points' + j + ' + span').html('');
$('#points' + j).after('<span class="' + errTextboxClass + '" style="color:#e03b3b;">' + points + '</span>');
$('#points' + j).focus();
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

在我的拉拉维尔刀片中,我正在循环一些答案,

@if($ans)
@for($j=0;$j<count($ans) ;$j++)
<input class="form-control " name="points[]" id="points{{$j}}" placeholder="POINTS"  value="<?php echo $ans[$j]['points'];?>">
@endfor
@endif

您可能希望对input元素使用更好的选择器。例如,您可以使用input[id^='points']。这将查找input元素,idpoints开头

。请考虑以下示例:

var results = $("input[id^='points']");
var points = 'Enter a valid point.';
var regex = '/^[A-Za-z!@#></!?$%^&*)(+=._-]+$/g';
results.each(function(i, el) {
if ($(el).val().match(regex)) {
console.log("Match on #" + $(el).attr("id"));
$(el).next('span').html('');
$("<span>", {
class: "errTextboxClass"
}).css("color", "#e03b3b;").html(points).insertAfter($(el));
$(el).focus();
}
});

使用.each()我们可以迭代每个匹配的元素,并根据正则表达式模式测试它们。您还可以考虑其他模式。看起来您只想允许数字,可以尝试:

^[D]+$

这将匹配任何非数字。如果是我,我会阻止用户使用.keypress()在字段本身中输入非数字。例如:

$(function() {
$("input[id^='points']").keypress(function(e) {
console.log(e.which);
if (e.which !== 46 && (e.which < 48 || e.which > 57)) {
e.preventDefault();
}
});
});
label {
width: 80px;
display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<label>Points 1</label> <input id="points1" type="text">
</div>
<div>
<label>Points 2</label> <input id="points2" type="text">
</div>
<div>
<label>Name</label> <input id="name1" type="text">
</div>

另请参阅:

  • 属性以选择器 [name^="value"] 开头]
  • .next((
  • 正则表达式101
  • 防止在输入类型编号中键入非数字

最新更新