在更改时附加输入表单返回默认值

Posted

技术标签:

【中文标题】在更改时附加输入表单返回默认值【英文标题】:Append input form on change returns default value 【发布时间】:2021-06-17 21:08:57 【问题描述】:

我有一个单选框,在更改时会附加一个输入字段。但是即使在附加的输入框中输入内容,输入值也始终保持为 1000。请帮忙,过去两个小时我一直在努力解决这个问题。

$('.input-amount').change(function () 
            if ($(this).val() === "others") 
                var htmlInput = `<input type="number" class="form-control number-as" value="1000">`;
                $('.value-amount span').text('');
                $('.value-amount span').append(htmlInput);
            

  );

点击下面的按钮,我想加载输入字段中输入的数字,但它总是加载默认的 1000

  $('#srppaymenetbutton1').on('click', function()

    $(this).append('<div class="loader">Loading...</div>');
    var amount = $('.input-amount:checked').val();
    if (amount === "others") 
        amount = $(document).find('.number-as').val();
    

    alert(amount);
   .........

【问题讨论】:

无法复制:jsfiddle.net/RoryMcCrossan/fm1ud5ra。诚然,我根据所使用的 JS 方法对您的 HTML 做了一些假设。请编辑问题以包含该问题的工作示例。 同意@RoryMcCrossan,因为代码看起来不错...... @RoryMcCrossan 啊,我有你的结构。它对你有用,但对我不起作用:| @pencil 为您的问题创建一个工作代码示例 还要检查 devtools 中的控制台是否有错误 【参考方案1】:

使用全局范围变量来存储最新插入的值。这里我使用了 input_amount

var input_amount = 1000
$('.input-amount').change(function() 
  if ($(this).val() === "others") 
    $('.value-amount span').html(`<input type="number" class="form-control number-as" value="$input_amount">`);
    listenValueChange();
  
);

function listenValueChange() 
  $(".number-as").change(function() 
    input_amount = $(this).val()
  )


$('#srppaymenetbutton1').on('click', function() 
  //$(this).append('<div class="loader">Loading...</div>');
  var amount = $('.input-amount:checked').val();
  if (amount === "others") 
    amount = $(document).find('.number-as').val();
  

  console.log(amount);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<label>
  <input type="radio" class="input-amount" name="amt" value="foo">foo
</label>
<label>
  <input type="radio" class="input-amount" name="amt" value="bar">bar
</label>
<label>
  <input type="radio" class="input-amount" name="amt" value="others">others
</label>

<div class="value-amount">
  <span></span>
</div>

<button id="srppaymenetbutton1">Payment</button>

【讨论】:

以上是关于在更改时附加输入表单返回默认值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vue js 中设置输入表单控件默认聚焦,直到输入值?

创建一个使用javascript打开默认邮件应用程序并附加文件的表单

更改输入标签中的默认值

隐藏或排除前端表单中的 ACF 字段并存储默认值

如何在表单输入字段中为密码分配默认值?

将表单的所有输入重置为默认值而不重新加载