0

我有一个动态添加输入、文本和选择元素的表单。

表单的 ID 是#user-form,我需要更改input/select/text此表单中出现的元素的值。

其中一个表单项在页面加载时隐藏,这就是我将其包含input:hidden在选择中的原因。

一个元素的 HTML 输出示例如下所示:

<input id="slider-coll" class="enq-form-input form-text" type="text" maxlength="128" size="10" value="" name="slider_coll">

我当前使用 jQuery 的代码如下所示:

sliderForm.find('#user-form').find('.enq-form-input, .enq-form-select, input:hidden').change(function() {
    inputValue = $(this).val();
    console.log(inputValue);
    $(this).val(inputValue);

  if (catchValue && feetValue) {
      calculateAmounts(catchValue, feetValue);
    }
});

我将catchValue&定义feetValue为 change 函数之外的全局变量。此表单还使用 jQuery 滑块插件。

Console.log返回正确的值,但我无法获取要更新的实际输入值。

calculateAmounts是一个 ajax 函数,只要更改任何值就需要触发。

现在catchValue&feetValue正在返回 false,即使console.log返回正确的值也是如此。

我可能错过了一些简单的东西,有人知道如何解决这个问题吗?

* 根据书呆子的要求* *

calculateAmounts在下面,但这不是问题。当我针对单个强制更改对其进行测试时,它会起作用。我的问题是输入的值没有更新。

function calculateAmounts(catchValue, feetValue) {
  jQuery.ajax({
    type: 'POST',
    url: '/calculateAmounts/ajax',
    dataType: 'json',
    success: ajaxCalcAmountsCompleted,
      data: {
        catchValue:catchValue,
        feetValue:feetValue
      }
    });
}
4

1 回答 1

0
inputValue = $(this).val();
console.log(inputValue);
$(this).val(inputValue);

为什么要将输入值更改为自身?

还有,你说的catchValuefeetValue都是假的,所以calculateAmounts不会被调用。

此外,sliderForm.find('#user-form')尝试在其自身中查找表单$(#user-form)就足够了,因为 id 在文档中是唯一的

您说您正在尝试更改输入的值,但是.change每当更改值时都会调用一个事件。

你的意思是这样的吗?

$('#user-form').
    find('.enq-form-input, .enq-form-select, input:hidden').
    each(function() {
        inputValue = $(this).val();

        $(this).val("new text"); //whatever new value for the input

        //do something with inputValue ..

        if (catchValue && feetValue) {
           calculateAmounts(catchValue, feetValue);
        }
    });
于 2013-04-14T12:11:03.220 回答