我正在努力完成以下目标,并且对Javascript
不太熟悉所以我希望我能得到一些好的建议和答案,因为我已经得到了{{1}的大力帮助之前的问题。
基本上我有一个输入字段,用户将输入一个值。输入该值后,我希望在将值提交给Ajax处理程序之前,在div中为用户提供一些信息。我还想在输入字段文本的每次更改时向他们显示值。我提交了3种不同类型的数据,因此对于每种类型,我希望根据输入包含的内容向用户显示不同的信息集。为此我使用了一个开关,但是开关当前没有工作,如下图所示。
Javescript
当我只在分配给div变量的div中显示sv.value时,它会正确显示,但是当引入开关时,我没有得到任何输出。该开关基于每个function createLinks() {
var sv = document.getElementById('sv').value // Input Text
var div = document.getElementById('svResult');
switch (true) {
case (sv.indexOf('1') >= 0):
div.innerHTML="1 Links: ";
break;
case (sv.indexOf('2') >= 0):
div.innerHTML="2 Links: ";
break;
case (sv.indexOf('3') >= 0):
div.innerHTML="3 Links: ";
break;
}
//div.innerHTML=sv.value;
}
<div>
<form>
<label for="sv">Server:</label>
<input type="text" id="sv" size="16" title="Coming Soon" onchange="createLinks()"/>
<input type="submit" style="margin-left: 10px;" value="Search" class="button1"/>
</form>
<div id="svResult"></div>
</div>
语句的返回是真还是假,但可能有一些我想要的简单。
我确实看到this有助于将case
值正确地输入变量,但更多地关注input
语句。
答案 0 :(得分:0)
在HTML中,不需要ID属性,表单控件必须具有成功的名称。您还可以从侦听器传递对该元素的引用:
<input type="text" name="sv" size="16" title="Coming Soon" onchange="createLinks(this)">
然后脚本可以是:
function createLinks(el) {
var value = el.value;
var div = document.getElementById('svResult');
if (value.indexOf('1') != -1) {
div.innerHTML = '1 Link';
} else if (value.indexOf('2') != -1) {
div.innerHTML = '2 Links';
} else if (value.indexOf('3') != -1) {
div.innerHTML = '3 Links';
}
} else {
div.innerHTML = '';
}
}
以上将在第一场比赛时返回,因此输入'123'将报告“1 link”。此外,当控件失去焦点时,将调度change事件,这可能比您想要的更晚。