以下功能有什么问题?错误中有一个
标记,当错误发生时它会被填充,因此错误会显示一秒钟然后消失。
$('#error').hide();
$('#error').find('p').change(function(){
if($(this).contents().length > 0){
$(this).show();
}
});
编辑:添加错误文件
<div id="error" class="error">
<span style="float:right" >CLICK to remove.</span>
{% block error %}
{% ifnotequal '' where %}
<p>where-{{where}}</p>
{% endifnotequal %}
{% if error %}
<p> error-{{error}}</p>
{% endif %}
{% endblock %}
</div>
答案 0 :(得分:2)
AFAIK,更改事件仅适用于输入元素,它不会为您的段落元素触发。
修改强> 如果你的问题是段落再次变得不可见,那么必须有一些其他代码可以做到这一点。检查代码中的setInternal或setTimeout方法调用。
答案 1 :(得分:1)
如果我正确理解了您的问题,那么您的代码有什么问题,就是期望调用onchange
上的p
事件。这不是通常发生的事情。您应该阅读onchange
并将其与您期望的任何行为进行比较/对比(我不太了解)。
答案 2 :(得分:1)
看起来您正在设置更改时显示的<p>
。为什么<p>
会发生变化?顺便说一下,隐藏了#error
元素,因此如果隐藏其父级,设置<p>
以显示它将不会执行任何操作。我认为你可能需要.end()
来恢复#error
元素。
我认为这更符合您的要求:
$('#error').hide();
$('#error').find('p').change(function(){
if($(this).contents().length > 0){
$(this).parent().show(); // .parent() should return #error
}
});
答案 3 :(得分:0)
您的代码中没有JavaScript错误。问题是你正在隐藏错误div。查找是一种遍历div的所有子项的遍历方法。然后你选择用隐藏的父母显示div。它不会显示任何内容。