Javascript Don';如果输入字段值等于特定文本,则不提交表单
我有一个带有引导和谷歌应用程序脚本的表单。我已经为表单定义了常规验证,但现在需要为字段配置特定验证。如果id为“estado”的输入字段的值为“Terminado”,则不应提交表单。输入字段的值由google应用程序脚本函数生成,并在输入字段“inputid”更改时更新 输入字段estado由“inputid”上的值确定。当我更改inputid的值时,我的脚本将转到一个DB,并像从excel获取vlookup一样获取estado的值。然后,当我更改inputid时,我的代码将在数据库的列estado上搜索或查找值 这是我的代码:Javascript Don';如果输入字段值等于特定文本,则不提交表单,javascript,html,forms,validation,Javascript,Html,Forms,Validation,我有一个带有引导和谷歌应用程序脚本的表单。我已经为表单定义了常规验证,但现在需要为字段配置特定验证。如果id为“estado”的输入字段的值为“Terminado”,则不应提交表单。输入字段的值由google应用程序脚本函数生成,并在输入字段“inputid”更改时更新 输入字段estado由“inputid”上的值确定。当我更改inputid的值时,我的脚本将转到一个DB,并像从excel获取vlookup一样获取estado的值。然后,当我更改inputid时,我的代码将在数据库的列esta
勒加达公式
勒加达公式
维亚杰酒店
没有任何人会在塞尔拉多附近的艾尔维亚耶大道上看到达托斯。
埃斯塔多
没有安格拉多·洛斯·达托斯和埃斯托斯,没有儿子瓦利多。
环境达托斯
错误
通知
&时代;
不需要完全按照公式办事
Datos correctoros
通知
&时代;
我的公式是正确的。他说:“我们的合作伙伴是卢埃戈·塞拉·拉勒加达。
卡甘多
卡甘多
公式化环境
&时代;
你是说什么
塞拉
注册官萨利达
var数组值;
函数afterButtonClicked(){
if(validate()){
var cuenta=document.getElementById(“cuenta”);
var inputid=document.getElementById(“inputid”);
var estado=document.getElementById(“estado”);
var kmfinal=document.getElementById(“kmfinal”);
var rowDataArrival={
cuenta:cuenta.value,
inputid:inputid.value,
estado:estado.value,
kmfinal:kmfinal.value,
};
google.script.run.addNewRowArrival(RowDataArrival);
$('#model')。model('hide'))
$('successnotification')。toast('show')
setTimeout(函数(){
location.reload()
}, 6000);
}否则{
$('#model')。model('hide'))
$('#errornotification').toast('show'))
}
}
函数验证(){
var fieldsToValidate=document.queryselectoral(#用户表单输入,#用户表单选择”);
Array.prototype.forEach.call(fieldsToValidate,function(el){
if(el.checkValidity()){
el.classList.remove(“无效”);
}否则{
el.classList.add(“无效”);
}
});
返回Array.prototype.every.call(fieldsToValidate,function(el){
返回el.checkValidity();
});
}
函数getId(){
var idCode=document.getElementById(“inputid”).value;
google.script.run.withSuccessHandler(updateIdcode).getId(idCode);
}
函数updateIdcode(estadolist){
document.getElementById(“estado”).value=estadList;
}
google.script.url.getLocation(函数(位置){
document.getElementById(“inputid”).value=
location.parameters.inputid[0];
getId();
});
document.getElementById(“inputid”).addEventListener(“input”,getId);
document.getElementById(“enviar”).addEventListener(“单击”,点击后按钮);
document.getElementById(“加载”).remove();
现在,我尝试了很多方法来配置特定输入的字段验证,但都不起作用。如果输入值与函数的值为“Terminado”,我尝试将值设置为“empty”,并利用我的常规验证,但没有成功。你有办法解决我的问题吗?就像@Fritzdultimate说的那样,你可能需要使用
event.preventDefault()
但是我认为你的validate函数也有问题
function validate() {
var fieldsToValidate = document.querySelectorAll("#userform input, #userform select");
Array.prototype.forEach.call(fieldsToValidate, function (el) {
if (el.checkValidity()) {
el.classList.remove("is-invalid");
} else {
el.classList.add("is-invalid");
}
});
return Array.prototype.every.call(fieldsToValidate, function (el) {
return el.checkValidity();
});
}
与Array.prototype不同,您应该具有要在其上运行函数的实际阵列,如下所示:
function validate() {
var fieldsToValidate = document.querySelectorAll("#userform input, #userform select");
fieldsToValidate.forEach(function (el) {
if (el.checkValidity()) {
el.classList.remove("is-invalid");
} else {
el.classList.add("is-invalid");
}
});
return fieldsToValidate.every(function (el) {
return el.checkValidity();
});
}
编辑:@dwmorrin是正确的,
fieldsToValidate.forEach(function(el){
与Array.prototype.forEach.call相同(fieldsToValidate,function(el){
,所以这不应该有什么区别。就像@Fritzdultimate说的那样,您可能需要使用event.preventDefault()
但我认为验证函数中也存在问题
function validate() {
var fieldsToValidate = document.querySelectorAll("#userform input, #userform select");
Array.prototype.forEach.call(fieldsToValidate, function (el) {
if (el.checkValidity()) {
el.classList.remove("is-invalid");
} else {
el.classList.add("is-invalid");
}
});
return Array.prototype.every.call(fieldsToValidate, function (el) {
return el.checkValidity();
});
}
与Array.prototype不同,您应该具有要在其上运行函数的实际阵列,如下所示:
function validate() {
var fieldsToValidate = document.querySelectorAll("#userform input, #userform select");
fieldsToValidate.forEach(function (el) {
if (el.checkValidity()) {
el.classList.remove("is-invalid");
} else {
el.classList.add("is-invalid");
}
});
return fieldsToValidate.every(function (el) {
return el.checkValidity();
});
}
编辑:@dwmorrin是正确的,
fieldsToValidate.forEach(函数(el){
与Array.prototype.forEach.call(fieldsToValidate,函数(el)相同){
所以这不会有什么区别。我发现解决方案在第一个实例中调用特定的验证,如果返回true,则转到第二个验证这是javascript代码:
我发现解决方案在第一个实例中调用特定验证,如果返回true,则转到第二个验证这是javascript代码:
是的,我现在更改了代码…感谢您的评论…带有“enviar”id的按钮在哪里?使用事件。preventDefault()为了防止它提交这不是一个表单,您必须按此顺序将
更改为
。是的,我现在更改了代码…感谢您的评论…带有“enviar”的按钮在哪里id?使用event.preventDefault()为了防止它提交这不是formfirst,您必须按此顺序将
更改为
,使用允许此欺骗,但我相信在此上下文中,您显示的两个代码块是等效的。您是否确实尝试运行代码并注意到不同的行为?@dwmorrin您能提供更多详细信息吗德莫林