【问题标题】:validation on form input not working表单输入验证不起作用
【发布时间】:2018-08-21 06:40:35
【问题描述】:

我有一个像这样的表格

<form  data-toggle="validator" role="form" method="post" >
  <input type="text" id="first_name" name="first_name" required >
  <input id="rec_skill" name="tags-4" type="text" required>
  <select class="profile-select" name="industry" id="industry" required>
    <option value="">INDUSTRY </option>
       <?php foreach($industry as $indus): ?>
      <option value="<?php echo $indus->industry; ?>" >
        <?php echo $indus->industry; ?>
      </option>
       <?php endforeach; ?>
  </select>
  <input id="skills" name="skills" type="text" value=""  class="form-control" required>
  <button type="submit" class="btn btn-primary psbtn-bg" id="submit_profile" >SUBMIT</button>
</form>

如果输入字段为空,则单击提交按钮时,它会像这样突出显示

和这部分相关的代码是

if(rec_skill=="" || rec_skill==null)
  {
    $(".tagsinput").css("border", " 1px solid #B94A48");
  }
else
  {
    $(".tagsinput").css("border", "1px solid #ccc");
  }

if(skills!='')
  {
    $(".tagsinput").css("border", "1px solid #ccc");
  }
else
  {
    $(".tagsinput").css("border", " 1px solid #B94A48");
  }

现在,如果用户在这些输入字段中填写任何值,突出显示的颜色就会被移除。它适用于普通输入字段,但不适用于

 <input id="rec_skill" name="tags-4" type="text" required> 

还有

 <input id="skills" name="skills" type="text" value=""  class="form-control"
 required>

上面提到的 2 个输入字段是使用此 plugin 创建的,并且在此插件下使用“具有自动完成功能的标签输入”

现在,如果用户填写这 2 个输入值,突出显示的颜色不会消失。我用来创建此功能的代码是

$("#rec_skill").change(function() 
  {
    if ($(this).val() == "") 
      {
        $(".tagsinput").css("border", " 1px solid #B94A48");
      }
    else
      {
        $(".tagsinput").css("border", "1px solid #ccc");
      }
  });

$("#skills").change(function() 
  {
    if ($(this).val() == "") 
      {
        $(".tagsinput").css("border", " 1px solid #B94A48");
      }
    else
      {
        $(".tagsinput").css("border", "1px solid #ccc");
      }
  });

如果用户插入或选择了值,任何人都可以建议如何删除突出显示的颜色

【问题讨论】:

  • 因为插件似乎也可以通过onchange 工作(正如您所说的那些具有自动完成功能的文件),这就是您的更改功能根本不起作用的原因。使用mouseoutmouseleave
  • 您可以从以下答案中获得帮助。 stackoverflow.com/questions/11267755/…
  • @Alive to Die 我曾尝试使用这些选项,但似乎不起作用。 $("#rec_skill").mouseout(function(){ console.log("test"); $(".tagsinput").css("border", "1px solid #ccc"); }); 我尝试使用 console.log 进行检查,但控制台中没有打印任何内容
  • @hasan challawala 感谢您的链接,但它对我没有帮助,如果您能提供更多链接或一些代码 sn-p 将不胜感激

标签: javascript jquery twitter-bootstrap validation jquery-tags-input


【解决方案1】:

您的 jQuery 不正确。首先,您的input 具有 ID rec_skillsskills,因此要使用 ID 调用元素,您应该使用 $(#idname) 而不是 $(.idname)。其次,您的代码中不存在类名 .taginput 的元素。请查看 sn-p 以供参考。

编辑:最好在这种情况下使用focusout 来检查用户是否跳过输入字段而不输入任何值。

$("#rec_skill").focusout(function() 
  {
    if ($(this).val() === "") 
      {
        $(this).css("border", " 1px solid #B94A48");
      }
    else
      {
        $(this).css("border", "1px solid #ccc");
      }
  });

$("#skills").focusout(function() 
  {
    if ($(this).val() === "") 
      {
        $(this).css("border", " 1px solid #B94A48");
      }
    else
      {
        $(this).css("border", "1px solid #ccc");
      }
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<input id="rec_skill" name="tags-4" type="text" required> 


<input id="skills" name="skills" type="text" value=""  class="form-control"
 required>

希望有帮助

【讨论】:

  • 我已经尝试过类似$("#rec_skill").focusout(function() { alert("====="); if ($(this).val() === "") { $(this).css("border", " 1px solid #B94A48"); } else { $(this).css("border", "1px solid #ccc"); } }); 的上述代码,但如果我输入值,则不会打印警报消息
  • 成功了吗?尝试在此处运行代码片段中的代码,它的工作原理。
猜你喜欢
  • 2023-04-02
  • 2021-10-15
  • 2021-12-01
  • 2017-01-13
  • 2014-11-29
  • 2014-02-07
  • 2013-12-31
  • 2016-09-22
  • 1970-01-01
相关资源
最近更新 更多