Как использовать события onFocus, onChange и onClick для поля <input type = "text"> - PullRequest
2 голосов
/ 09 января 2012

У меня есть домашнее задание, в котором я должен использовать события 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>

Я знаю, что есть несколько ошибок, хотя и не в самом коде, потому что он не делает то, что мне нужно. Прежде чем я добавил '. Alert Count = "+ runningTotal (i) +". "" И аргумент предупреждения, которое он сообщал мне, когда я менял поле.

Ответы [ 4 ]

2 голосов
/ 09 января 2012

Я не уверен, что вам нужен следующий код для запуска этих функций 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)"/>
0 голосов
/ 09 января 2012

обо всем по порядку: вашим операторам if нужны операторы сравнения (==) вместо операторов присваивания (=), после этого

что-то вроде этого будет работать:

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

Она отправит ссылку на себя в функцию, где вы можете получить доступ к ее значению или идентификатору и т. Д. Он должен обрабатываться после window.onload, чтобы убедиться, что элементы формы существуют до того, как назначено событие.

0 голосов
/ 09 января 2012

Во-первых, я не вижу нигде в вашем коде, что вы назначаете эти функции необходимым событиям.

Во-вторых, я нигде не вижу, чтобы field1, field2 и field3 переменные присваиваются значения.Наряду с этим вы проверяете значение поля, и я не уверен, почему вы это делаете, в любом случае.

И в-третьих, вы должны использовать == для проверки на эквивалентность, а не =.

0 голосов
/ 09 января 2012
if (document.form1.field1.value = field1){ 

Нужно быть

if (document.form1.field1.value == field1){ 
...