我尝试使用 field.first().focus();
但我在控制台中收到此消息:
未捕获的类型错误:对象#HTMLInputElement没有方法“first”
我认为我错过了一步,但我现在不知道。
<script>
function richiesti() { //open function richiesti
var dati=0;
var cognome=document.clienti.cognome;
var nome=document.clienti.nome;
var codfisc=document.clienti.codfisc;
[cognome, nome, codfisc].forEach(function (field) { // open function field
if (field.value){ // open if value
dati++;
} // close if value
else { // open else value
field.className = "bg_orange text-sx c_white b";
field.value = "richiesto" ;
field.focus(); // i need the focus at first field
} // close else value
}); // close function field
if ( dati == 3 ){ // open if dati
var pattern = /^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/;
var codiceFiscale = document.getElementById("codfisc");
if (codiceFiscale.value.search(pattern) == -1) { // open if codiceFiscale
alert("Il valore inserito non è un codice fiscale!");
codiceFiscale.value = "";
codiceFiscale.focus();
} // close if codiceFiscale
else { // open else codiceFiscale
document.clienti.submit() ;
} // close else codiceFiscale
} // close if dati
else { // open else dati
alert('Cognome, Nome e Codice fiscale sono campi obbligatori.');
} // close else dati
} // close function richiesti
</script>
这是带有输入字段的表单:
<HTML>
<table class="half" >
<tr>
<td class="tdocra c_white b">Cognome :</td>
<td><input name="cognome" id="cognome" type="text" class="text-sx" value="" ></td>
<td class="tdocra c_white b">Nome :</td>
<td><input name="nome" id="nome" type="text" class="text-sx" value=""></td>
<td class="tdocra c_white b">Codice Fiscale :</td>
<td><input name="codfisc" id="codfisc" type="text" class="text-sx" value="" onChange="richiesti();"></td>
</tr>
</table>
</HTML>
查看代码
我像建议一样添加了一个变量和部分代码。 它工作正常,现在它仅更改第一个字段 void 的类和值。
<script>
function richiesti() { //open function richiesti
var dati=0;
var cognome=document.clienti.cognome;
var nome=document.clienti.nome;
var codfisc=document.clienti.codfisc;
var first = true; // add variable
[cognome, nome, codfisc].forEach(function (field) { // open function field
if (field.value){ // open if value
dati++;
} // close if value
else { // open else value
if (first) { // set focus to first only
field.className = "bg_orange text-sx c_white b";
field.value = "richiesto" ;
field.focus();
first = false; // after the first one has focus
}
} // close else value
}); // close function field
if ( dati == 3 ){ // open if dati
var pattern = /^[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]$/;
var codiceFiscale = document.getElementById("codfisc");
if (codiceFiscale.value.search(pattern) == -1) { // open if codiceFiscale
alert("Il valore inserito non è un codice fiscale!");
codiceFiscale.value = "";
codiceFiscale.focus();
} // close if codiceFiscale
else { // open else codiceFiscale
document.clienti.submit() ;
} // close else codiceFiscale
} // close if dati
else { // open else dati
alert('Cognome, Nome e Codice fiscale sono campi obbligatori.');
} // close else dati
} // close function richiesti
</script>
最佳答案
添加一个变量,以便您仅在与循环中的 else 条件匹配的第一次迭代中应用焦点
var dati=0;
var cognome=document.clienti.cognome;
var nome=document.clienti.nome;
var codfisc=document.clienti.codfisc;
var first = true; // add variable
[cognome, nome, codfisc].forEach(function (field) {
if (field.value){ // open if value
dati++;
} else {
field.className = "bg_orange text-sx c_white b";
field.value = "richiesto" ;
if (first) { // set focus to first only
field.focus();
first = false; // after the first one has focus
}
}
});
关于javascript - 使用 forEach 函数聚焦于第一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513550/