Я стараюсь с field.first().focus();
, но я получаю это сообщение в консоли:фокуса на первое поле с функцией Foreach
Uncaught TypeError: Объект #HTMLInputElement не имеет какую-либо методы «первую»
Я думаю, Мне не хватает шаг, но я не сейчас.
<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>
ОБЗОР КОД
добавить переменную и часть кода, как предложение. Он отлично работает, и теперь он меняет класс и значение только для первого поля.
<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>
Можете ли вы обеспечить [jsFiddle] (http://jsfiddle.net/) демонстрируя вашу проблему? – Xotic750
@ Xotic750 Это ссылка для демонстрации [jsFiddle] (http://jsfiddle.net/geomo/464uT/2/) с некоторым переводом итальянский/английский для входного значения. – geomo