由同一表单更新的另一个字段的 JavaScript 文本表单验证

标签 javascript html

我创建了以下表单:当您在第一个文本框中输入名称时,它会在按下 + 按钮后动态地将名称添加到下面的另一个字段中。该功能是在 + 按钮上实现的。

现在我想在同一个脚本中添加一个验证逻辑,这样同一个名字就不会被添加两次。请指教,只想用javascript实现。

    function promptAdd(list){
    var text = "";
    var inputs = document.querySelectorAll("input[type=text]");
    for (var i = 0; i < inputs.length; i++) {
        text += inputs[i].value;
        }
    var li = document.createElement("li");
    var node = document.createTextNode(text);
    li.appendChild(node);
    document.getElementById("list").appendChild(li);

        }
<!doctype html>
<html>
<div class="row">
    <div class="col-lg-6 mb-1">
        <div class="card h-100 text-left">
            <div class="card-body">
                <h4 class="card-title">Add Resources</h4>
                <input type="text" class="form-control" name="employee" placeholder="Enter Name" />
                <small id="message" class="form-text text-muted">Press + to add to your list</small>
                <button id="bd1" class="btn add-more" onclick="promptAdd(list)" type="button">+</button>
                <br></br>
                <h5>List of Resources added</h5>
                <div class="form-control" id="list">
                    <span id="list">
                </div>
            </div>
        </div>
    </div>
</div>
</html>

最佳答案

验证可以简单地通过遍历所有 li 并将每个 li 的文本与 input 的值进行比较来实现> 如果值匹配,则返回 false,例如:

var lis = document.querySelectorAll('#list li');
for (var i = 0; i < lis.length; i++) {
  if (lis[i].innerText == text) {
    return false;
  }
}

希望这对您有所帮助。

function promptAdd(list) {
  var text = "";
  var inputs = document.querySelectorAll("input[type=text]");
  
  for (var i = 0; i < inputs.length; i++) {
    text += inputs[i].value;
  }
  
  var lis = document.querySelectorAll('#list li');
  for (var i = 0; i < lis.length; i++) {
    if (lis[i].innerText == text ){
      resetInputs();
      
      return false;
    }
  }
  
  var li = document.createElement("li");
  var node = document.createTextNode(text);
    
  li.appendChild(node);
  document.getElementById("list").appendChild(li);
  
  resetInputs();
}

function resetInputs(){
  var inputs = document.querySelectorAll("input[type=text]");
  
  for (var i = 0; i < inputs.length; i++) {
    inputs[i].value = "";
  }
}
<div class="row">
  <div class="col-lg-6 mb-1">
    <div class="card h-100 text-left">
      <div class="card-body">
        <h4 class="card-title">Add Resources</h4>
        <input type="text" class="form-control" name="employee" placeholder="Enter Name" />
        <small id="message" class="form-text text-muted">Press + to add to your list</small>
        <button id="bd1" class="btn add-more" onclick="promptAdd(list)" type="button">+</button>
        <br><br>
        <h5>List of Resources added</h5>
        <div class="form-control" id="list">
          <span id="list"></span>
        </div>
      </div>
    </div>
  </div>
</div>

关于由同一表单更新的另一个字段的 JavaScript 文本表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46833897/

相关文章:

javascript - 获取 Angular JS,需要 JS 和 Framework 7 一起工作

Android WebView err_unknown_url_scheme

javascript - 检查 JSON 对象数组中的重复值

javascript - 如何限制每行的文本区域长度(以像素为单位)和行数?

javascript - 在 append() 中将 Javascript 变量传递给 HTML 代码

html - 如何将 html 元素的高度设置为 { 100% - 10em from bottom }

css - XHTML CSS Auto Height Div 问题

javascript - 使用 while 循环创建 cron 作业

javascript - 谷歌地图API v3搜索多边形没有鼠标事件

java - Jsoup Element.text() 间歇性?