- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在同一个html页面上有多个词汇表。
在每个词汇表上方,我希望用户可以在字段中输入单词或短语以仅查看包含输入的单词或短语的表行。例如,如果输入“ orde”,则不包含字符串“ orde”的表行将消失。如果您访问http://www.amanado.com/idioma-colombiano/,该按钮已经起作用,单击“ Vocabulario(oficial y de jerga)-palabras y frases comunes”以展开手风琴部分,然后在“ Ingresa palabra o frase”一词下方的字段中输入“ orde” ”,“在塔拉的情报中”。输入“ orde”后,词汇表中除2行外的所有行都应消失(剩下2行)。
我有2个问题。我遇到的第一个问题是我无法在页面上每个词汇表上方重复表单字段,因为执行此操作时仅表单字段的第一个外观起作用。我遇到的第二个问题是,我希望form字段仅适用于表正下方的所有行。当前,表单字段适用于页面上具有“ myTable”类的所有表的所有行。也许我可以以某种方式为每个表指定一个表ID,然后使表上方的表单字段仅适用于表单字段正下方的表的表ID。并且,无需添加太多的javascript或额外的CSS类(最好是避免添加更多的CSS类)来实现此目标将是很棒的。我猜想这两个问题都可以用几行javascript来解决,并且可以为每个表添加一个统一格式的表ID(例如filter1,filter2,filter3)来解决。
下面是(a)出现在我的html中的表单字段; (b)出现在我的html中的打开表格标记的示例;和(c)我正在使用的javascript。
我不是软件工程师,但是如果有人告诉我要具体做什么,我确实知道如何实施更改(例如,进行此确切的更改,然后进行此确切的更改,然后进行此确切的更改)。我感谢任何人都可以提供的任何帮助,尤其感谢字面说明。
(a)表格栏位从这里开始
<form class="live-search" action="" method="post">
<p>Ingresa palabra o frase en el siguiente campo para filtrar la información de la tabla</p>
<input id="filter" class="text-input" type="text" value="Mostrar sólo filas que contengan..." onFocus="clearText(this)" onBlur="clearText(this)" />
</form>
<table class="myTable" summary="Palabras y frases (oficiales y de jerga)">
$(document).ready(function(){
$("#filter").keyup(function(){
// Retrieve the input field text and reset the count to zero
var filter = $(this).val(), count = 0;
// Loop through the comment list
$('table[class="myTable"] tr').each(function(){
// If the list item does not contain the text phrase fade it out
if ($(this).text().search(new RegExp(filter, "i")) < 0) {
$(this).fadeOut();
// Show the list item if the phrase matches and increase the count by 1
} else {
$(this).show();
count++;
}
});
// Update the count
var numberItems = count;
$("#filter-count").text(" Total = "+count);
});
});
Changed from: <span class="filter-count">0</span>
Changed to: <span class="filter-count"></span>
<form class="live-search" action="" method="post">
<p>Ingresa palabra o frase en el siguiente campo para filtrar la información de la tabla</p>
<input class="input-text" type="text" value="Mostrar sólo filas que contengan..." />
<span class="filter-count"></span>
</form>
<table class="myTable" summary="Palabras y frases (oficiales y de jerga)">
.live-search {
overflow: hidden;
width: 100%;
padding: 8px 0;
border: 0px solid #e3e3e3;
margin-bottom: 10px;
font-size: 12px;
color: rgb(61, 61, 61) !important;
}
.live-search input {
border:1px solid #ddd;
padding:5px 8px;
width:300px;
font-size: 12px;
color: rgb(61, 61, 61) !important;
-moz-border-radius:4px;
-webkit-border-radius:4px;
}
.live-search input:focus {
border-color: #c3c3c3;
-moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
-webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
box-shadow: 0 0 3px rgba(0,0,0,.2);
}
$(function() {
$(".input-text").keyup(function() {
var $this = $(this),
count = 0,
pattern = new RegExp($this.val(), "i"),
$group = $this.closest(".group"),
$count = $group.find(".filter-count");
$group.find(".myTable tr").each(function() {
$tr = $(this);
if ($tr.text().search(pattern) < 0) {
$tr.fadeOut();
} else {
$tr.show();
count++;
}
$count.text("(" + count + ")")
});
}).on('focus blur', function() {
if (this.defaultValue == this.value) this.value = '';
else if (this.value == '') this.value = this.defaultValue;
});
});
最佳答案
这里的技巧是相对于当前正在接收文本的输入元素起作用。
说明:
修改文本输入字段以读取<input class="text-input" type="text" value="Mostrar sólo filas que contengan..." />
并添加到所有其他相关组。除非将表单用于其他用途,否则这些字段无需包装在<form></form>
标记中。
将<span class="filter-count">0</span>
(或类似名称)添加到所有相关组。此元素将接收count
统计信息。
删除功能clearText。
修改javascript以使其如下:
:
$(function() {
$(".text-input").keyup(function() {
var $this = $(this),
count = 0,
pattern = new RegExp($this.val(), "i"),
$group = $this.closest(".group"),
$count = $group.find(".filter-count");
$group.find(".myTable tr").each(function() {
$tr = $(this);
if ($tr.text().search(pattern) < 0) {
$tr.fadeOut();
} else {
$tr.show();
count++;
}
});
$count.text(" Total = " + count);
}).on('focus blur', function() {
if (this.defaultValue == this.value) this.value = '';
else if (this.value == '') this.value = this.defaultValue;
});
});
$(function() {
$(".text-input").on('keyup', function(e) {
var disallow = [37, 38, 39, 40];//ignore arrow keys
if($.inArray(e.which, disallow) > -1) {
return true;
}
var inputField = this,
val = this.value,
pattern = new RegExp(val, "i"),
$group = $(this).closest(".group"),
$trs = $group.find(".myTable tbody tr"),
$s;
if(val === '') {
$s = $trs;
}
else {
$s = $();
$trs.stop(true,true).each(function(i, tr) {
if(val !== inputField.value) {//if user has made another keystroke
return false;//break out of .each() and hence out of the event handler
}
$tr = $(tr);
if ($tr.text().match(pattern)) {
$s = $s.add(tr);
}
});
//$trs.not($s).fadeOut();
$trs.not($s).hide();
}
$group.find(".filter-count").text("(" + $s.show().length + ")");
}).on('focus blur', function() {
if (this.defaultValue == this.value) this.value = '';
else if (this.value == '') this.value = this.defaultValue;
});
$(".group").each(function() {
$this = $(this);
$this.find(".filter-count").text("(" + $this.find("tbody tr").length + ")");
});
});
.fadeOut()
,但我个人更喜欢使用
.hide()
。
关于javascript - keyup函数的Javascript问题-尝试多次使用页面上的同一表单域,但只有第一个表单域有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11278111/
我创建了一个 keyup() 函数,代码在这里 $(document).ready(function() { var scntDiv = $('#add_words'); var wo
我希望它只在 keyup 而不是之前触发。有人可以帮忙吗? $(function() { $('#acf-field_5a32085c7df98-field_5a3208f87df99').on('k
在 Chrome 30.0.1599.101 和 IE 11 中,输入选择器无法在 Firefox 25.0.1 中正常工作 在 Chrome/IE 中损坏: $(document).ready(fu
在我为工作而构建的网站上,我们有一个搜索栏,用户可以在其中输入内容以搜索存储在一组元素数据中的各个字段。当他们开始输入时,问题出现在较慢的浏览器中。 我尝试做的是以下操作,使用 jQuery Defe
我正在尝试使用 vanilla js 编写一些简单的东西来在用户按下回车键时触发一个函数。我在下面找到了一些代码,但我不确定如何让它工作,因为该函数没有名称。 function (event) {
场景如下: 我有一个内容可编辑的 div。我还有一个文本区域,其中 .keyup() 上发生了一些事情。 我需要这样,在content editable div的keyup()上,将contented
有一个输入文本会在“onkeyup”事件上触发一个函数。当该函数触发时,我将使用 .on("keyup") 方法绑定(bind)一个“keyup”事件,以获取最后按下的键以查明它是否是字母数字,以便触
我想知道如何对同一个 #id 执行 .keyup() 和 .click() ? 即本质上,我想在用户尝试点击 enter 或点击 #search 按钮时验证 #id 。 非常感谢 最佳答案 $('#f
我必须在这里使用jquery keyup来检测用户是否输入任何文本,但我的问题是如果用户使用鼠标粘贴文本,它将无法检测到它,你能告诉我原因吗? 这是我的源代码: $("textarea").keyup
我正在尝试创建一个输入字段,用户只能在其中输入数字。这个功能对我来说已经可以正常工作了: $('#p_first').keyup(function(event){ if
我正在尝试编写类似于“占位符”polyfill 的内容。我想捕获输入字段上的 keyup 事件并获取用户输入的字符,所以我有以下代码: $elem.on('keyup',function(e){
我想我已经弄清楚了......请参阅我的评论。抱歉。 我有一个 JSON Web 服务,它在某个 keyup() 事件上调用,该事件根据输入检索一些数据。我想在输入任何内容之前加载一组初始数据。我正在
所以我使用 Keyup 来计算输入字段的总数。到目前为止,一切都很好。但现在我想这样做:如果选中#a 复选框,则将总金额加 12。如果没有,则添加 0。 我的代码基于此:http://jsfiddle
我在弄清楚为什么 keyup 事件在以下情况下不起作用(不显示警报)时遇到问题,我对表单使用 bootstrap 3,但我不认为 form-control取消键盘输入? HTML: jQuery:
我正在构建一个搜索表单,.keyup 中的 ajax 函数可以有不同的参数,我想通过检查是否存在另一个值来检查是否需要包含此参数。这是我现在拥有的: var delay = (function() {
我的 html 和 jquery 代码 Insert title here td { min-height: 50px; min-width: 50px; }
每次我按下键盘上的一个键,它都会将 $(this).val(""); 设置为 null,并且 score 变量将为 -2 . initialize: function() { var scor
我是 javascript 及其事件的新手。这是我的表格 html 代码,其中有收入标题及其各自的价格。 sn Title of income
我有一个这样的表: 当数量/价格变化小计也发生变化时,我想制作Javascript。我的js: $("#invoice_item").delega
我正在 js 中制作字符计数器,但 keyup 事件不起作用??? $(document).ready(function() { function countingCharacter(elemen
我是一名优秀的程序员,十分优秀!