为什么.val()总是空的(Jquery)?

时间:2012-11-30 09:46:05

标签: jquery html input

我的输入有问题。

这是我的html / php代码:

$dotation = ($ig["dotation"]) ? $ig["dotation"]: '<input type="text" class="datepickerIG" name="igDota" size="8" value="test"/>';
            $bo .= '<tr style="background-color: black;">
                     <td class="dot">' . $dotation . '</td>
                     <td class="modif" ref="' . $ig["id"] . '"><a href="#">Modifier</a></td>

这是我的js代码:

        var dot_cha = $(this).parent().find('.dot').val();

我的问题是,为什么var dot_cha总是空的? 当我使用.html输入.val时,我得到了正确的答案,那是我的错误?

感谢。

7 个答案:

答案 0 :(得分:3)

.val()获取input-element的value属性。 &#34; .DOT&#34;是一个td,并没有值属性。

你想要dot_cha究竟是什么?如果它是你所追求的输入,这将有效。

$(this).parent().find('.datepickerIG').val();

如果是td .html()或.text()的文本会给你这个。

答案 1 :(得分:1)

val检索input的值以及具有此属性的其他标记。在您的情况下,.dot是没有属性value的表格行的类...所以您必须使用.text().html()

答案 2 :(得分:0)

我会说问题是<td>没有值,它包含HTML。

这就是为什么.html工作而.val不行。

您对具有值的输入使用.val,但<td>不是输入,而只是HTML标记。

答案 3 :(得分:0)

val()将与表单元素(例如inputtextarea等...)一起使用,而不是与元素一起使用。

您需要获取元素的innerHTMLinnerText

类似的东西:

var dot_cha = $(this).parent().find('.dot').text();

虽然你需要确保你有一个元素 - 因为你可能会得到一些元素。

答案 4 :(得分:0)

来自docs

  

.val()方法主要用于获取表单元素的值   例如input,select和textarea。对于元素,.val()方法返回一个数组   包含每个选定的选项;如果未选择任何选项,则返回   空。

答案 5 :(得分:0)

来自jQuery API documentation

  

.val()方法主要用于获取表单元素的值,例如inputselecttextarea

val用于表单元素。由于.dot是使用td的{​​{1}}元素(不是表单元素),因此无效。要获取表单元素以外的任何元素的内容,请使用.html.text

答案 6 :(得分:0)

doc here

  

.val()方法主要用于获取表单元素的值,例如input,select和textarea。

你是对的.html有效,因为在你的情况下你有一个td,你应该使用

$(".dot").html()

希望有所帮助