使用.val()。length!= 0来显示文本框

时间:2017-07-25 16:10:22

标签: jquery display preventdefault is-empty

我正在进行调查,每个问题后都有一个注释部分。只有在第一次按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如果这是问题,那将非常有帮助。

谢谢!

2 个答案:

答案 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没有接受任何参数