为什么我不能在拦截HTML表单的提交事件时更改值?

时间:2015-07-15 21:21:33

标签: javascript jquery html forms

我使用jQuery Input Mask Plugin来掩盖表单中的输入,我需要向服务器提交一个没有掩码的值。我的方法是使用类“.masked-inputs-form”标记表单,然后绑定到其“submit”事件,替换相关输入的值。经过繁琐的调试后,我发现发布的值是屏幕上可见的值,而不是我的函数中设置的值。来自社区的任何想法?

我的代码的JavaScript等价如下:

(function() {
  $(function() {
    return $(".masked-inputs-form").on('submit', function(e) {
      var i, input, inputs, len;
      e.preventDefault();
      inputs = $('.decimal-input-mask, .signed-decimal-input-mask, .integer-input-mask, .signed-integer-input-mask');
      for (i = 0, len = inputs.length; i < len; i++) {
        input = inputs[i];
        $(input).val(input.value.replace(/,/g, ''));
      }
      return this.submit();
    });
  });
}).call(this);

<form accept-charset="UTF-8" action="#" class="masked-inputs-form form-inline" id="my_form" method="post" role="form">
  <input id="hidden_input" type="hidden" value="1">
  <input class="form-control decimal-input-mask" id="positive_integer_input" size="10" type="text" style="text-align: right;">
  <input class="form-control decimal-input-mask" id="percent_input" size="10" type="text" style="text-align: right;">
  <input class="form-control signed-decimal-input-mask" id="plus_minus_input" size="15" type="text" style="text-align: right;">
  <input class="btn btn-primary" name="commit" type="submit" value="add">
</form>

更新:我通过使用插件“removeMaskOnSubmit”中的一个选项找到了一种解决方法,该选项最初不起作用,因为我有一个旧版本的插件。

0 个答案:

没有答案