为什么我的动态javascript高亮表单中断
Why does my dynamic javascript highlight form break?
我一直在尝试构建一个简单的html表单,通过在表单的keyup(使用jquery)的span中包装它,在页面上突出显示黄色文本。
它工作得很好,直到我在键盘上退格以完全清除表单的内容,然后它停止工作。我创建了一个快速代码依赖来演示我的问题:
http://codepen.io/liamtarpey/pen/KefCx这可能是一个非常简单的修复,但我不能得到我的头周围出了什么问题,有人知道是什么问题吗?
我真的很想使用'body'或'html'选择器而不是'*',因为它也会影响我的页面头部,但我不能让它与这些中的任何一个一起工作。
HTML:<form>
<input type="text" id="searchfor"/>
</form>
<!-- The below is just a test to check the value of the input is being returned -->
<span>Value of form: </span><span id="test"></span>
<div>
<h3>example text here</h3>
</div>
jQuery: $("#searchfor").on("keyup change", function() {
// store value in a variable
value = this.value;
// unwrap span from previous search
$("span[id^='highlightspan']").contents().unwrap();
// wrap span around inputted text
$("*").each(function() {
if($(this).children().length==0) {
$(this).html($(this).html().replace(value, '<span id="highlightspan" style="background:yellow;">' + value + '</span>'));
}
});
$("#test").html(value);
});
在打开highlightspan
元素后删除它们:
$("span[id^='highlightspan']").contents().unwrap();
$("span[id^='highlightspan']").remove();
这将防止DOM上重复的id,但是最好只是将highlightspan
作为一个类。
http://codepen.io/anon/pen/rIujD
Fiddle
if (value === '') {
$('#highlightspan').remove();
}
您需要删除highlightspan
,因此再次在此代码中添加$(this).html($(this).html().replace(value, '<span id="highlightspan" style="background:yellow;">' + value + '</span>'));
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何使用WCF服务和javascript表单post上传.doc文件
- Javascript生成的表单未提交
- 如何使用javascript或html下载PDF格式的填写表单
- HTML表单提交时未执行外部函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- Ajax发布表单序列化,发布引号'
- 多级HTML表单
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- Jquery处理提交按钮's单击事件而不中断表单发布
- 嵌套在表单中的引导下拉菜单:输入时选项卡索引中断
- 在 iframe 中指定全局变量名称时,表单目标会中断
- jQuery 在多步骤表单上验证失败后中断
- 工具提示JavaScript在未给出“title”属性时会中断以下表单元素
- 使用 Enter 提交表单会在插入输入字段后中断 - 原因以及如何修复
- Onchange javascript在jquerymobile中提交表单中断
- 为什么我的动态javascript高亮表单中断
- 如何中断表单发布,直到按下确认按钮
- Firefox中的表单动态中断