代码之家  ›  专栏  ›  技术社区  ›  Azaryan

无法使用javascript将更改后的值显示到隐藏字段

  •  0
  • Azaryan  · 技术社区  · 11 年前

    我有一个复选框和两个数字输入字段:

    <input name="exercise[hold]" type="hidden" value="0"><input class="te-cb" id="exercise_hold" name="exercise[hold]" type="checkbox" value="1">
    <input class="exerciseReps input-mini" id="exercise_number_of_reps_in_set" min="0" name="exercise[number_of_reps_in_set]" placeholder="Reps" type="number" style="display: none; ">
    <div class="input-append te-len" style="display: inline-block; ">
        <input class="exerciseLength input-mini" id="exercise_length" min="0" name="exercise[length]" placeholder="Length" type="number">
        <span class="add-on">sec</span>
    </div>
    

    一个输入字段用js隐藏:

    $('.te-len').hide()
    

    在上面的表单中,还有一个具有自动竞争功能的文本输入字段,它通过ajax获取数据(这与这里无关)。使用jquery,我使用从服务器获得的数据设置表单的输入字段的值。

    如果复选框的值为true,我还会显示隐藏字段:

    if data[selected].hold
        $('.exerciseReps').hide()
        $('.te-len').show()
    

    这很有效

    每个字段都设置正确,接受隐藏字段,该字段为空。

    奇怪的是,我在设置了隐藏字段的值后,对其发出了警报,警报显示了应该设置的值,但该值不可见

    $('.te-len').val( data[selected].length )
    alert $('.te-len').val()
    

    注意:js代码实际上是coffescription。

    1 回复  |  直到 11 年前
        1
  •  2
  •   vee    11 年前

    我认为问题是因为你正在为 div 。尽管使用 val 工作,该函数主要用于表单元素,如 input , select textarea .

    如果您打算替换 div.te-len 那么你可以使用 html text :

    $('.te-len').html( data[selected].length )
    

    但听起来你想表现出来 data[selected].length 中的值 input.exerciseLength 数字字段。为此,您应该使用:

    $('#exercise_length').val( data[selected].length )