我有一个家庭作业,我应该在三个表单字段的每一个上使用onFocus,onChange和onClick事件。每个事件都应该将字段名称传递给函数。该功能应该警告事件已发生,并让用户知道发生了多少警报。我花了最后一周试图找到答案,而我能够始终如一地找到的是onFocus事件不能与文本字段一起使用(虽然不会改变我的作业)。我到目前为止的代码如下:
<SCRIPT LANGUAGE="JavaScript">
<!--
var numEvents = 0;
var field1 = "";
var field2 = "";
var field3 = "";
function clickedField(fieldId) {
if (document.form1.field1.value = field1){
events=runningTotal(1);
alert("You have clicked Field 1. Alert Count = " + runningTotal(i) + ".");
}
if (document.form1.field2.value = field2){
events=runningTotal(1);
alert("You have clicked Field 2. Alert Count = " + runningTotal(i) + ".");
}
if (document.form1.field3.value = field3){
events=runningTotal(1);
alert("You have clicked Field 3. Alert Count = " + runningTotal(i) + ".");
}
}
function changedField(fieldId) {
if (document.form1.field1.value!= field1){
events=runningTotal(1);
alert("You have changed Field 1. Alert Count = " + runningTotal(i) + ".");
}
if (document.form1.field2.value!= field2){
events=runningTotal(1);
alert("You have changed Field 2. Alert Count = " + runningTotal(i) + ".");
}
if (document.form1.field3.value!= field3){
events=runningTotal(1);
alert("You have changed Field 3. Alert Count = " + runningTotal(i) + ".");
}
}
/*
function focusedField(fieldId) {
if (document.form1.field1.value = field1){
events=runningTotal(1);
alert("You have focused on Field 1. Alert Count = " + runningTotal(i) + ".");
}
else if (document.form1.field2.value = field2){
events=runningTotal(1);
alert("You have focused on Field 2. Alert Count = " + runningTotal(i) + ".");
}
else if (document.form1.field3.value = field3){
events=runningTotal(1);
alert("You have focused on Field 3. Alert Count = " + runningTotal(i) + ".");
}
}*/
function runningTotal(i){
numEvents += i;
return numEvents;
}
// -->
</SCRIPT>
我知道有几个错误,但实际代码中没有,因为它没有做我需要它做的事情。之前我加了'。警报计数=“+ runningTotal(i)+”。“'以及我在更改字段时告诉我的警报参数。
答案 0 :(得分:2)
我不确定您是否需要以下代码才能触发javascript函数
<input name="field1" id="field1" onfocus="focusedField(this.id)" onclick="clickedField(this.id)" onchange="changedField(this.id)"/>
<input name="field2" id="field2" onfocus="focusedField(this.id)" onclick="clickedField(this.id)" onchange="changedField(this.id)"/>
<input name="field3" id="field3" onfocus="focusedField(this.id)" onclick="clickedField(this.id)" onchange="changedField(this.id)"/>
答案 1 :(得分:0)
if (document.form1.field1.value = field1){
需要
if (document.form1.field1.value == field1){
答案 2 :(得分:0)
首先,我没有在代码中看到您将这些功能分配给必要的事件。
其次,我没有看到将field1
,field2
和field3
变量分配给值的任何地方。除此之外,你正在检查字段的价值,我不知道为什么你这样做。无论如何。
第三,您必须使用==
来测试等效性,而不是=
。
答案 3 :(得分:0)
第一件事:你的if语句需要比较运算符(==)而不是赋值运算符(=),之后
这样的事情会起作用:
window.onload = function(){
document.form1.field1.onclick = function(){
changedField(this);
}
}
它会向函数发送对它的引用,您可以在其中访问其值或id等。 需要在window.onload之后处理它,以确保在分配事件之前存在表单项。