【问题标题】:"listen" for changes on slider / text field and update second text field“监听”滑块/文本字段的更改并更新第二个文本字段
【发布时间】:2018-08-14 15:12:47
【问题描述】:

我有两个滑块用于更新文本字段中的金额,一个用于金额,一个用于存款。我已经完成了以下操作(我确信这很啰嗦,并且有更好的方法):

var amount = $("input[name='amount']").val();
var amountdiv = amount.substring(1, amount.length);
var depositper = amountdiv / 100 * 20
$(depositper).prepend('£');
$("input[name='deposit']").val(depositper);

但是,它只能计算出金额字段的 20%,因为在设置存款字段之前我似乎无法正确获取前置部分(substr 和 prepend 将删除然后重新添加英镑符号所以数学可以发生)。我还希望它随着金额字段中的值更新而动态变化 - 这可能吗?

任何帮助表示赞赏。

【问题讨论】:

    标签: jquery math field


    【解决方案1】:

    您可以只使用字符串连接或template literals 来添加井号。

    只要每次金额更改时都会更改,您可以将“重新计算”放入一个函数中,并在每次金额值更改时调用该函数。

    我已将您的子字符串替换为replace(/#/g, ''),这将删除字符串中的所有井号符号。使用这种方法,只要在amount 字段中输入一个数字,计算仍然有效。

    function calculateDeposit() {
      var amount = $("input[name='amount']").val();
      var amountdiv = amount.replace(/#/g, '');     //remove all # symbols
      var depositper = `#${amountdiv / 100 * 20}`;  //prepend # (see Template Literals documentation above)
    
      $("input[name='deposit']").val(depositper);
    }
    
    $("input[name='amount']").change(calculateDeposit); //When the amount field changes, call calculateDeposit()
    input { display: block; }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    Amount: <input type="text" name="amount" />
    Deposit: <input type="text" name="deposit" />

    如果您希望每次按键都更新存款,那么您可以将事件侦听器从 .change() 事件更改为 .keyup() 事件。

    【讨论】:

    • 如果用户在字段中输入数字但实际上是使用滑块完成的 - 拖动它们会自动填充文本字段,因此这不会产生任何影响
    • 您没有包含滑块的代码/标记,也没有提供除“有滑块”之外的任何细节。如果不提供有关滑块的更多详细信息,您将无法获得更多答案 - 您是否使用插件,如何在 JavaScript 中初始化它们等。大多数滑块实现都有某种onChange 回调,您可以使用而是。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多