2つの機能があります。1つはフォームの名前フィールドの情報を検証し、もう1つはそれらのフィールドの情報を取得してアラートボックスに出力します。これとは別に、これらの関数は正常に機能します。両方を呼び出さなければならないので、ラッパー関数を作成しました。関数は実行されますが、フォーカスする代わりに更新されます。奇妙なことに、最初のフィールドをチェックすると、.focus();を含めてすべて問題ありませんが、2番目のフィールドを検証しようとすると.focus();になります。動作せず、ページが更新されます。どんな助けでもいただければ幸いです。(最初の質問を修正してこれを追加しようとしましたが、保存しようとしても何も起こりませんでした。)
function main() {
var test = validate();
if (test == true) {
concatinate();
return true;
}
}
function validate() {
//alert ("TEST!!!");
var first = document.getElementById('firstname').value;
if (first.length == 0 || first.length > 25) {
alert("Please enter your first name, no longer than 25 chracters.");
document.getElementById('firstname').focus();
return false;
}
var last = document.getElementById('lastname').value;
if (last.length == 0 || last.length > 25) {
alert("Please enter your last name, no longer than 25 characters.");
document.getElementsByName('lastname').focus();
return false;
}
var title = document.getElementById('title').value;
if (document.getElementById('title').selectedIndex == 0) {
alert("Please select your salutation");
document.getElementById('title').focus();
return false;
}
return true;
}
function concatinate() {
var first = document.getElementById('firstname').value;
var last = document.getElementById('lastname').value;
var title = document.getElementById('title').value;
var fullname = title + " " + first + " " + last;
var printFull = "Welcome, " + fullname;
alert(printFull);
}
<form name="name" form id="name" method="post" onsubmit="return main();">
Salutation: <select name="title" select id="title">
<option selected="Please Select">Please select</option>
<option value="Mr.">Mr.</option>
<option value="Mrs.">Mrs.</option>
<option value="Miss">Miss</option>
</select><br><br>
First Name : <input type="text" input id="firstname" name="firstname">
Last Name : <input type="text" input id="lastname" name="lastname"><br><br>
<input type="submit" value="Submit"><br><br>
</form>