Input Required属性在javascript生成时不起作用

Input Required attribute does not working when generated by javascript

本文关键字:不起作用 javascript Required 属性 Input      更新时间:2023-09-26

Input Required属性直接写入Body时有效。当生成新行时,需要在检查中显示属性,但不能用于下一行元素。我正试着说明这个场景。

对于以下图像,所需字段正在工作必填字段仅适用于第一行

但是当我按下添加按钮时,下一行元素所需属性不像下面这样工作:对于下一个任何其他行元素所需属性不起作用

下面是我的代码。

    <!DOCTYPE html>
<html>
<head>
	<title>Test by JavaScript</title>
	<link type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="http://1000hz.github.io/bootstrap-validator/dist/validator.min.js"></script>
</head>
<form id="testForm" name="testForm" method="post" action="" autocomplete="off" enctype="multipart/form-data" data-toggle="validator" role="form">
                <table id="testDataTable" class="table">
                  <thead>
                    <tr>
                      <th><div class="form-group">Y/N</div></th>
                      <th><div class="form-group">Name</div></th>
                      <th><div class="form-group">No</div></th>
                      <th><div class="form-group">Value</div></th>
                    </tr>
                  </thead>
                  <tbody id="testTbody">
                    <tr>
                      <td><div class="form-group"><INPUT type="checkbox" id="t_chk" name="t_chk" /></div></td>
                      <td><div class="form-group"><input type="text" class="form-control" id="t_NameTxt" name="t_NameTxt[]" required /></div></td>
                      <td><div class="form-group"><input type="text" class="form-control" id="t_IDTxt" name="t_IDTxt[]" required /></div></td>
                      <td><div class="form-group"><input type="text" class="form-control" id="t_ApxValTxt" name="t_ApxValTxt[]" required /></div></td>
                    </tr>
                  </tbody>
                </table>
                <div id="testBtnBlk" class="col-md-10">
                  <div class="form-group">
                    <input type="button" value="Add" class="btn btn-warning" onclick="addRowTest('testDataTable')"/>
                    <input type="button" id="delRow" class="btn btn-danger" value="Delete"/>
                  </div>
                </div>
                <script type="text/javascript">
                  function addRowTest(tableID) {
                    var table = document.getElementById(tableID);
                    var rowCount = table.rows.length;
                    var row = table.insertRow(rowCount);
                    var newcell = '<tr><td><div class="form-group"><INPUT type="checkbox" id="t_chk'+rowCount+'" name="t_chk"/></div></td><td><div class="form-group"><input type="text" class="form-control" id="t_NameTxt'+rowCount+'" name="t_NameTxt[]" required /></div></td><td><div class="form-group"><input type="text" class="form-control" id="t_IDTxt'+rowCount+'" name="t_IDTxt[]" required /></div></td><td><div class="form-group"><input type="text" class="form-control" id="t_ApxValTxt'+rowCount+'" name="t_ApxValTxt[]" required /></div></td></tr>';
                    table.rows[rowCount].innerHTML = newcell;
                  }
                  $(document).ready(function () {
                    $("#delRow").on("click", function () {
                      if($('#testTbody').children('tr').length>1){
                        $('table tr').has('input[name="t_chk"]:checked').remove()
                    }
                    })
                  });
                </script>
                </form>
</body>
</html>

有没有人可以帮助我的超文本错误?

添加新行后需要重新初始化插件。这与HTML5的required属性无关。

只是检查DOC,您需要在添加函数的底部使用:

$('#testForm').validator('update');

<!DOCTYPE html>
<html>
<head>
  <title>Test by JavaScript</title>
  <link type="text/css" href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
  <script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
  <script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
  <script type="text/javascript" src="http://1000hz.github.io/bootstrap-validator/dist/validator.min.js"></script>
</head>
<form id="testForm" name="testForm" method="post" action="" autocomplete="off" enctype="multipart/form-data" data-toggle="validator" role="form">
  <table id="testDataTable" class="table">
    <thead>
      <tr>
        <th>
          <div class="form-group">Y/N</div>
        </th>
        <th>
          <div class="form-group">Name</div>
        </th>
        <th>
          <div class="form-group">No</div>
        </th>
        <th>
          <div class="form-group">Value</div>
        </th>
      </tr>
    </thead>
    <tbody id="testTbody">
      <tr>
        <td>
          <div class="form-group">
            <INPUT type="checkbox" id="t_chk" name="t_chk" />
          </div>
        </td>
        <td>
          <div class="form-group">
            <input type="text" class="form-control" id="t_NameTxt" name="t_NameTxt[]" required />
          </div>
        </td>
        <td>
          <div class="form-group">
            <input type="text" class="form-control" id="t_IDTxt" name="t_IDTxt[]" required />
          </div>
        </td>
        <td>
          <div class="form-group">
            <input type="text" class="form-control" id="t_ApxValTxt" name="t_ApxValTxt[]" required />
          </div>
        </td>
      </tr>
    </tbody>
  </table>
  <div id="testBtnBlk" class="col-md-10">
    <div class="form-group">
      <input type="button" value="Add" class="btn btn-warning" onclick="addRowTest('testDataTable')" />
      <input type="button" id="delRow" class="btn btn-danger" value="Delete" />
    </div>
  </div>
  <script type="text/javascript">
    function addRowTest(tableID) {
      var table = document.getElementById(tableID);
      var rowCount = table.rows.length;
      var row = table.insertRow(rowCount);
      var newcell = '<tr><td><div class="form-group"><INPUT type="checkbox" id="t_chk' + rowCount + '" name="t_chk"/></div></td><td><div class="form-group"><input type="text" class="form-control" id="t_NameTxt' + rowCount + '" name="t_NameTxt[]" required /></div></td><td><div class="form-group"><input type="text" class="form-control" id="t_IDTxt' + rowCount + '" name="t_IDTxt[]" required /></div></td><td><div class="form-group"><input type="text" class="form-control" id="t_ApxValTxt' + rowCount + '" name="t_ApxValTxt[]" required /></div></td></tr>';
      table.rows[rowCount].innerHTML = newcell;
      $('#testForm').validator('update');
    }
    $(document).ready(function() {
      $("#delRow").on("click", function() {
        if ($('#testTbody').children('tr').length > 1) {
          $('table tr').has('input[name="t_chk"]:checked').remove()
        }
      })
    });
  </script>
</form>
</body>
</html>