无法使用this.val()或this.attr('value')在<input />字段中获取值

时间:2013-12-30 05:53:25

标签: jquery html

我正在尝试在 fieldset 标记中获取许多 输入 字段的值。但 $(this).val() $(this).attr('value')返回字段的旧值而不是更新的新值由用户。以下是html代码:

<fieldset id="fieldset_id">             
    <div class="form-item">
        <input type="text" input_id="1" value="aaa_1">
    </div>
    <div class="form-item">
        <input type="text" input_id="2" value="aaa_2">
    </div>
</fieldset>

及以下是用户更新输入字段并按“保存”按钮后执行的代码:

$('#fieldset_id').find("input").each(function(){
    idsArray.push($(this).attr('input_id'));
    newValues.push($(this).val());
});

现在,这是用例:

  1. 输入字段的当前值分别为 aaa_1 aaa_2
  2. 用户将 aaa_1 的值更新为 aaa_111 ,然后按保存按钮。
  3. 保存按钮,将执行上述代码。
  4. newValues 数组中的值为 aaa_1 aaa_2 而非 aaa_111 aaa_2

3 个答案:

答案 0 :(得分:0)

在推送值之前,您需要清除数组。

写:

idsArray = newValues = [];
$('#fieldset_id').find("input").each(function(){
    idsArray.push($(this).attr('input_id'));
    newValues.push($(this).val());
});

答案 1 :(得分:0)

您的阵列未定义,

像这样定义,

var idsArray = [], newValues= [];

答案 2 :(得分:0)

试试这个

HTML

<form id="fieldset_id">             
    <div class="form-item">
        <input type="text" input_id="1" value="aaa_1"/>
    </div>
    <div class="form-item">
        <input type="text" input_id="2" value="aaa_2"/>
    </div>
    <button>Save</button>
</form>

脚本

$('button').on('click',function(){
var idsArray = [], newValues= [];
$('#fieldset_id').find("input").each(function(){
    idsArray.push($(this).attr('input_id'));
    newValues.push($(this).val());
    console.log(idsArray, newValues)
});
});

DEMO