我有一个复选框和两个数字输入字段:
<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。
我认为问题是因为你正在为 div 。尽管使用 val 工作,该函数主要用于表单元素,如 input , select 和 textarea .
div
val
input
select
textarea
如果您打算替换 div.te-len 那么你可以使用 html 或 text :
div.te-len
html
text
$('.te-len').html( data[selected].length )
但听起来你想表现出来 data[selected].length 中的值 input.exerciseLength 数字字段。为此,您应该使用:
data[selected].length
input.exerciseLength
$('#exercise_length').val( data[selected].length )