这里我有一个html表,其中包含单元格内的单元格和输入字段:
<tr class="google-visualization-table-tr-even google-visualization-table-tr-sel">
<td class="google-visualization-table-td"><input id="costRedovi" vr="2013-04-01" kol="John Deer n7" class="form-control" value="0"></td>
<td class="google-visualization-table-td"><input id="costRedovi" vr="2013-04-01" kol="Laza Lazic" class="form-control" value="0"></td>
</tr>
现在我写了一个函数:
new google.visualization.events.addListener(table, 'ready', function () {
$("#costRedovi").focusout(function() {
console.log(this.attr('value'));
});
});
所以当table准备好用focusout事件做一些时...但我得到:Uncaught TypeError: Object #<HTMLInputElement> has no method 'attr'
当表准备就绪时我如何从input元素中获取值?当我把jquery作为HTML页面顶部的顶级源代码时,为什么我不能使用jquery函数呢?
我如何解决这个问题?
我到底需要什么?
当谷歌可视化表准备好获取jquery .focusout
事件并从ID = costRedovi ...
有可能吗?
答案 0 :(得分:2)
你需要将this
包装成jQuery包装器,如下所示:
console.log($(this).attr('value'));
标准Javascript API不包含od方法,例如attr
和this
是普通的javascript对象 - 它不包含jQuery方法。这就是你需要将它包装在$()
中的原因。
您也不能拥有多个具有相同名称的ID。 id应该在整个html文档中是唯一的。在大多数情况下,Javascript不会正确处理它。您应该删除focusout
事件侦听器并直接获取值(但在确保您的ID将是唯一的之后),例如:
console.log($('#costRedovi1').attr('value'));
console.log($('#costRedovi2').attr('value'));