首先让我先谈谈,在网络开发方面,我就像钓鱼一样。我是一名C / C ++,Labview开发人员,从未接触过HTML,JQuery代码。
我开发了一个记录器,用于在HTML文件中显示错误,警告和其他信息。我已经成功地编写了JQuery代码来显示/隐藏div,具体取决于按钮点击。例如;错误按钮仅显示红色字体等错误。
现在我正在尝试引入一个文本框,根据文本值显示/隐藏div。我有一些代码已实现但无法正常工作。 这是代码;
<button id="showError">Show Error</button>
<button id="showDebug">ShowDebug</button>
<button id="showAll">Show All</button>
<input type="text" name="keywords">
<script>
$("#showError").click(function () {
$('div[id^="error"]').show();
$('div[id^="debug"]').hide();
});
$("#showDebug").click(function () {
$('div[id^="error"]').hide();
$('div[id^="debug"]').show();
});
$("#showAll").click(function () {
$('div[id^="error"]').show();
$('div[id^="debug"]').show();
});
// this is where i need the help! I can't
// the regular expression to execute.
$('.keywords').keyup(function() {
var value = $(this).val();
var exp = new RegExp('^' + value, 'i');
$('div[id^="error"]').each(function() {
var isMatch = exp.test($(this).text());
$(this).toggle(isMatch);
});
});
// End of problem
</script>
<div style="color: rgb(51, 51, 255);" id="error">20140124_145317 - MainLoop: LoadTestStationConfiguration </div>
<div style="color: rgb(51, 51, 0);" id="debug">20140124_145338 - MainLoop: ReadConfigData </div>
<div style="color: rgb(51, 51, 255);" id="error">20140124_145338 - SecondLoop: CheckForNewSoftwareVersion </div>
因此,如果输入文本值= SecondLoop,则只显示最后一个div元素。如果输入文本值= MainLoop,则会显示前2个元素。
感谢您花时间阅读本文,这是我第一次在浏览器中编程! (与C ++不同;))
答案 0 :(得分:3)
$('.keywords')
错误使用选择器,改为
$('input[name=keywords]')
答案 1 :(得分:2)
$('.keywords').keyup(function() {
这不会选择您的文字输入,因为您的输入标识为name
而不是class
。
$('input[name=keywords]').keyup(function() {
无关,您的代码末尾有多个<div>
且ID相同。 只有第一个会受到影响,除非您更改ID或使用class="error"
代替id="error"
答案 2 :(得分:2)
第一个问题,您正在使用$('.keywords')
。 .
前缀通过类获取元素,而不是名称。要使用名称&#39;关键字&#39;来获取元素,您可以使用$('[name="keywords"]')
。
其次,看起来您对哪些属性用于哪些情况感到有点困惑。一个重要的规则是,页面上永远不应该有多个具有相同ID的元素。因此,您有两个<div>
个元素,其中id
为&#39;错误&#39;是无效的。这些应该是类而不是ID。 name
属性用于表单中的元素。提交表单后,值将以name
属性作为密钥发送到Web服务器。
现在我们已经清除了何时使用id
与class
与name
的对比,您可能更有意义使用id
&#39;关键字&#39;的属性元件。看起来只有一个关键词&#39;元素,我没有看到表格。
您正在使用的选择器(如$('div[id^="error"]')
)对您的方案非常有用。此选择器正在执行的操作是,将任何<div>
元素的id
属性 从 字符串&#39;错误&#39;开始。因此,它将获得以下任何元素:
<div id="error"></div>
<div id="error2"></div>
<div id="errorblahzasoidjren"></div>
我在代码中没有看到这样的情况,所以只使用$('#error')
也是一样,但如果你按照我之前的建议,那么你可以将它们转换为{{1相反,我会使用class
。
另一件事是,您似乎依赖于用户在框中键入正确的文本以触发操作。更直接的方法可能是使用$('.error')
元素。这将准确定义可以输入的值,并让用户只需单击以选择他们想要的值。这是您的代码,使用以下建议进行清理:
<select>