如何验证动态生成的字段是否为空



我正在用经典的asp开发一个引导程序环境。我有一个动态生成的输入字段

<input type="number" size="5" name="montantafacturer_<%=irs("INSPECTIONID")%>">
<button onclick="_EVENTSPARAM('events_ajouteralafacturation','<%=irs("INSPECTIONID")%>');">add</button>

一个页面上最多可以有100个动态生成的字段。

最基本的是,我应该填写字段montatamaker_<%=irs("INSPECTIONID"(%>,并单击"添加"以在回发方法中的数据库中插入值

我想知道我是否可以插入一个javascript代码来检查我的字段是否已填充,而不是从回发响应中获得字段空错误。。。以获得时间

即:

<input type="number" size="5" name="montantafacturer_<%=irs("INSPECTIONID")%>">
<button onclick="**IF montantafacturer_<%=irs("INSPECTIONID")%>" IS NOT EMPTY THEN** _EVENTSPARAM('events_ajouteralafacturation','<%=irs("INSPECTIONID")%>');">add</button>

我想知道这是否可以通过内联javascript实现。

请告知如何操作。

iid = irs("INSPECTIONID")
if iid <> "" then %>    
<input type="number" size="5" name="montantafacturer_<%=iid%>">
<button onclick="_EVENTSPARAM('events_ajouteralafacturation','<%=iid%>');">add</button>
<$ end if %>

这样,如果记录集为空,则不会输出HTML。如果将If/THEN移到Button标记之前,则不会为空值创建任何按钮。

首先,欢迎使用StackOverflow

第二。。。很长一段时间以来,当我停止使用经典ASP时(超过15年前(,很高兴看到他仍然有一个小地方:(

最后,但并非最不重要的。。。你的问题

由于您有输入和按钮,我相信您有一个for循环,在外部,我假设您有<form>标签包装所有输入和按钮

为了完成您正在尝试做的事情,并利用更好的代码技术,我很可能最终会使用(并假设您可以使用jQuery来提升一些javascript…如果您不能,请告诉我,我将在没有它的情况下重新编写(


<form action="/yourpage.asp" method="POST">
<table class="table">
<tbody>
<% For ... %>
<tr class="tr-<%=irs("INSPECTIONID")%>">
<td>
<input 
type="number" 
size="5" 
id="montantafacturer_<%=irs("INSPECTIONID")%>"
name="montantafacturer_<%=irs("INSPECTIONID")%>">
</td>
<td>
<button
class="btn"
data-event="events_ajouteralafacturation"
data-input="<%=irs("INSPECTIONID")%>"
>add</button>
</td>
</tr>
<% Next %>
</tbody>
</table>
</form>
<script>
$(function() {
// for every button with class "btn", fire "onButtonClick" fn upon click
$(".btn").on("click", onButtonClick);
});
function onButtonClick(evt) {
evt.preventDefault();
var btn = $(evt.currentTarget); // the clicked button
var btnEvent = btn.data("event");
var btnInput = btn.data("input");
// your logic
var input = $("#montantafacturer_" + btnInput).val();
if(input.length === 0) {
// show the error in any way you prefer
return;
}
// if we reach here, we have data in the input
_EVENTSPARAM(btnEvent, btnInput);
// you can now fire some code to submit the form
// or just this value, or even disable the button while it
// is being used to send the data (prevent double click), etc.
}
</script>

<tr class="tr-<%=irs("INSPECTIONID")%>">是我当时使用的一种技术,这样我就可以添加一个类,用另一种颜色标记该行,向用户提供一些反馈,告诉用户该行数据发生了什么,例如

$(".tr-" + btnInput).addClass("updating");

我还将id添加到输入中,以使用$("#...")而不是按名称搜索

关于使用JS内联的小咆哮

你为什么要使用内联JS?它确实不实用,也不可读——强烈建议将其转移到外部源中。

如何使用JS内联(请不要(

但是,如果你完全没有办法,你可以把所有普通的JS代码都放在像onclick这样的内联事件中。

<button onclick="
// this makes me sad
const allInputs = document.querySelectorAll('[name^=montantafacturer_]');
allInputs.forEach(input => {
if (input.value.length > 0 && !isNaN(input.value)) {
// number
} else {
// empty / Not a Number
}
});
">
add
</button>

这是关于你在寻找什么。

提及

  • 真的,不要使用内联JS
  • 正如另一位用户所指出的,您可能希望使用HTML属性required

最新更新