2

我有一个家庭作业,我应该在三个表单字段中的每一个上使用onFocus,onChange和events。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>

我知道有几个错误虽然不在实际代码中,但因为它没有做我需要做的事情。在我将. Alert Count = " + runningTotal(i) + "."and 参数添加到警报之前,它告诉我何时更改字段。

4

4 回答 4

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)"/>
于 2012-01-09T02:02:42.820 回答
0
if (document.form1.field1.value = field1){ 

需要

if (document.form1.field1.value == field1){ 
于 2012-01-09T02:05:20.733 回答
0

首先,我在您的代码中没有看到您将这些函数分配给必要事件的任何地方。

其次,我看不到任何地方将field1field2field3vars 分配给了一个值。除此之外,您正在检查该字段的值,无论如何,我不确定您为什么要这样做。

第三,您必须使用==来测试等效性,而不是=.

于 2012-01-09T02:09:17.443 回答
0

首先要做的事:你的 if 语句需要比较运算符 (==) 而不是赋值运算符 (=),然后

像这样的东西会起作用:

window.onload = function(){
    document.form1.field1.onclick = function(){
        changedField(this);
    }
}

它将向函数发送对itelf的引用,您可以在其中访问其值或id等。它需要在window.onload之后处理,以确保在分配事件之前表单项存在。

于 2012-01-09T02:13:13.080 回答