如何在<input type =“text”/>字段上使用onFocus,onChange和onClick事件

时间:2012-01-09 01:48:50

标签: javascript javascript-events onclick onchange onfocus

我有一个家庭作业,我应该在三个表单字段的每一个上使用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)+”。“'以及我在更改字段时告诉我的警报参数。

4 个答案:

答案 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)

首先,我没有在代码中看到您将这些功能分配给必要的事件。

其次,我没有看到将field1field2field3变量分配给值的任何地方。除此之外,你正在检查字段的价值,我不知道为什么你这样做。无论如何。

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

答案 3 :(得分:0)

第一件事:你的if语句需要比较运算符(==)而不是赋值运算符(=),之后

这样的事情会起作用:

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

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