Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Don';如果输入字段值等于特定文本,则不提交表单_Javascript_Html_Forms_Validation - Fatal编程技术网

Javascript Don';如果输入字段值等于特定文本,则不提交表单

Javascript Don';如果输入字段值等于特定文本,则不提交表单,javascript,html,forms,validation,Javascript,Html,Forms,Validation,我有一个带有引导和谷歌应用程序脚本的表单。我已经为表单定义了常规验证,但现在需要为字段配置特定验证。如果id为“estado”的输入字段的值为“Terminado”,则不应提交表单。输入字段的值由google应用程序脚本函数生成,并在输入字段“inputid”更改时更新 输入字段estado由“inputid”上的值确定。当我更改inputid的值时,我的脚本将转到一个DB,并像从excel获取vlookup一样获取estado的值。然后,当我更改inputid时,我的代码将在数据库的列esta

我有一个带有引导和谷歌应用程序脚本的表单。我已经为表单定义了常规验证,但现在需要为字段配置特定验证。如果id为“estado”的输入字段的值为“Terminado”,则不应提交表单。输入字段的值由google应用程序脚本函数生成,并在输入字段“inputid”更改时更新

输入字段estado由“inputid”上的值确定。当我更改inputid的值时,我的脚本将转到一个DB,并像从excel获取vlookup一样获取estado的值。然后,当我更改inputid时,我的代码将在数据库的列estado上搜索或查找值

这是我的代码:


勒加达公式
勒加达公式
维亚杰酒店
没有任何人会在塞尔拉多附近的艾尔维亚耶大道上看到达托斯。
埃斯塔多
没有安格拉多·洛斯·达托斯和埃斯托斯,没有儿子瓦利多。
环境达托斯
错误
通知
&时代;
不需要完全按照公式办事
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您能提供更多详细信息吗德莫林