【问题标题】:Change the value of Input file (Don't work)更改输入文件的值(不工作)
【发布时间】:2020-04-03 14:34:37
【问题描述】:

如果用户单击按钮,我有一个小脚本会创建一个新的 div 块。要计算创建了多少,我有一个隐藏的输入。每次创建新块时,此隐藏输入的值都应更新。

这是我的脚本:

$(function () {
    $("#addBtn3").on("click", function () {
        imageBlockCount++;
        document.getElementById("counter").value = imageBlockCount;

        $(
            $.parseHTML(
                `<div class="form-group" id="gallery-${imageBlockCount}" >
                <label for="new-content-${imageBlockCount}">New Content</label>
                    <input type="text" name="content-${imageBlockCount}" class="form-control" id="new-content-${imageBlockCount} test-${imageBlockCount}" placeholder="new content" required>
            </div>`
            )
        ).appendTo("#newElements");
    });
});

这是我的html代码:

<div style="flex:auto;text-align:right;">
    <button id="addBtn3" type="button">Content +</button> 
</div>

<input name="counter" type="text" id="counter" value="0" hidden>

<div id="newElements">
</div>

但是在应该更新值的脚本中不起作用,但我不知道为什么,我没有找到任何其他如此不同的方法。

【问题讨论】:

  • 您的代码对我有用!在 appendTo 之后放置 console.log($("#counter").val())
  • 是的,但是如果我按下按钮并创建元素,我检查隐藏的输入并且值仍然为 0
  • 这是默认行为,我发布一个答案来修复它
  • 好的,谢谢你,我会等它

标签: javascript count counter setvalue


【解决方案1】:

您的代码运行良好。将console.log($("#counter").val()) 放在appendTo 之后。

当输入字段的值发生变化时,网页的 HTML 不会自动更新。

如果你想要这样的功能,你可以在更新#counter的值之后放置:

$('#counter').attr('value', $('#counter').val());

$(function () {
  let imageBlockCount = 0
  $("#addBtn3").on("click", function () {
    imageBlockCount++;
    document.getElementById("counter").value = imageBlockCount;
    $('#counter').attr('value', $('#counter').val());
    $(
      $.parseHTML(
        `<div class="form-group" id="gallery-${imageBlockCount}"               <label for="new-content-${imageBlockCount}">New Content</label>
          <input type="text" name="content-${imageBlockCount}" class="form-control" id="new-content-${imageBlockCount} test-${imageBlockCount}" placeholder="new content" required>
        </div>`
      )
    ).appendTo("#newElements");
    console.log($('#counter').val())
  });
});
<div style="flex:auto;text-align:right;">
  <button id="addBtn3" type="button">Content +</button> 
</div>
  
<input name="counter" type="text" id="counter" value="0" hidden>
  
<div id="newElements">
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

  • 是的,我添加了这个,但它仍然不起作用。如果我将 "console.log($("#counter").val())" 写入控制台,它会返回 0。
  • 我添加了“$('#counter').attr('value', $('#counter').val());”更新值后仍然无法正常工作
  • 更新脚本不起作用。我试过这个“document.getElementById("counter").value = 1;”它仍然无法正常工作
  • @LazeHo 控制台有错误吗?在点击事件前添加var imageBlockCount = 0
  • 我发现问题是我所有的脚本都在一个 js 文件中,而不是在 html 文件中知道它可以工作。是否可以让脚本在和js文件中工作相同
猜你喜欢
  • 1970-01-01
  • 2011-10-19
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 2015-06-18
  • 1970-01-01
相关资源
最近更新 更多