我有一个动态添加输入,文本和选择元素的表单。
表单的ID为#user-form
,我需要更改此表单中显示的input/select/text
元素的值。
其中一个表单项在页面加载时隐藏,这就是我在select中包含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
&amp; feetValue
作为变更函数之外的全局变量。此表单还使用jQuery滑块插件。
Console.log
返回正确的值,但我无法获取要更新的实际输入值。
calculateAmounts
是一个ajax函数,无论何时更改任何值都需要触发。
现在catchValue
&amp;即使feetValue
返回正确的值,console.log
也会返回false。
我可能错过了一些简单的事情,有谁知道如何解决这个问题?
*每个Nerdwood请求* *
calculateAmounts
在下面,但不是问题。它在我针对单个强制更改进行测试时有效。我的问题是输入值没有更新。
function calculateAmounts(catchValue, feetValue) {
jQuery.ajax({
type: 'POST',
url: '/calculateAmounts/ajax',
dataType: 'json',
success: ajaxCalcAmountsCompleted,
data: {
catchValue:catchValue,
feetValue:feetValue
}
});
}
答案 0 :(得分:0)
inputValue = $(this).val();
console.log(inputValue);
$(this).val(inputValue);
为什么要将输入值更改为自身?
另外,您说catchValue
和feetValue
是假的,因此不会调用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);
}
});