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

我的输入有问题。

这是我的html / php代码:

$dotation = ($ig["dotation"]) ? $ig["dotation"]: ''; $bo .= ' ' . $dotation . ' Modifier 

这是我的js代码:

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

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

谢谢。

.val()获取input-element的value属性。 “.dot”是一个td,没有value-attribute。

你想要dot_cha究竟是什么? 如果它是您所追求的输入,这将起作用。

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

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

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

我会说问题是

没有值,它包含HTML。

这就是为什么.html工作和.val没有。

您在具有值的输入上使用.val,但

不是输入,而只是HTML标记。

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

您需要获取元素的innerHTMLinnerText

就像是:

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

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

来自文档 :

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

从jQuery API文档 :

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

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

这里的文件说

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

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

 $(".dot").html() 

希望能帮助到你