我正在进行调查,每个问题后都有一个注释部分。只有在第一次按End或F10后才会出现音符。在跳到问题2,然后回到问题1之后,如果没有笔记,则应再次隐藏问题1的注释部分。
但是,如果在备注部分中有任何写作,我希望它们在回到问题2的问题1后仍然可见。
我试图通过使用.val()。length!= 0来完成此操作,以便在写入一个字符时显示注释。我不确定我的问题是使用.val()。length还是使用我的preventDefault命令,我想阻止默认操作,在这种情况下不显示注释。
<style>
#[% QuestionName() %]_div {display:none}
</style>
<script>
$(document).keydown(checkNote);
function checkNote(f){
f = f || window.event;
if (f.keyCode == '121' || f.keyCode == '35'){
f.preventDefault(f);
$("#[% QuestionName() %]_div").css('display', 'block');
}
}
function displaynote(d){
d = d || window.event;
if ($("#[% QuestionName() %]_div").val().length != 0) {
d.preventDefault(d);
$("#[% QuestionName() %]_div").css('display', 'block');
}
}
<script>
如果有人可以告诉我我的问题可能在哪里或提供替代方案 .val()。length!= 0如果这是问题,那将非常有帮助。
谢谢!
答案 0 :(得分:2)
元素#[% QuestionName() %]_div
是输入吗?
$(...).val()
仅适用于输入元素(如果您调用函数,例如,div
,它将始终返回空字符串。)
如果您使用的是div
,则可以使用$(...).text()
或$(...).html()
来检索其内容。
答案 1 :(得分:0)
所以我终于找到了问题所在,其中有一些问题。我将displaynote函数移动到$(document).ready事件中,以便在页面准备就绪时调用它,因为它没有被调用,
if ($('#[% QuestionName() %]').val().length != 0) {
我确实使用了val()。length但确保我使用了非div元素,感谢Gabriel,然后删除了d = d || window.event;和d.preventDefault(d)因为$(document).ready没有接受任何参数