※ ChatGPTを利用し、要約された質問です(原文:head内から外部jsにするとスクリプトが動作しません。)
外部jsへの変換でスクリプトが動作しない場合の対処方法
このQ&Aのポイント
head内のスクリプトを外部jsに変換する場合、スクリプトの一部を変更する必要があります。
外部jsに変換する際には、スクリプトの冒頭の`<script type ='text/javascript'>`と末尾の`</script>`は削除します。
変更後のスクリプトを外部ファイルに保存し、`<script>`タグの中身を外部ファイルへのパスに置き換えます。
head内から外部jsにするとスクリプトが動作しません。
下記の「●htmlのhead内に書かれているスクリプト」を外部jsにしたく、
<script type ="text/javascript">
<!--
の部分と
-->
</script>
以外の部分をテキストファイルにペーストして外部jsにしたのですが、
上手く動作しません。
この場合、どうやったら外部jsとして動作させることができますでしょうか?
どうかご教授下さいますよう、よろしくお願い致します。
フォームタグは以下のようになっています。
<form method="POST" action="●●.cgi" name="f" onSubmit="return check()">
●htmlのhead内に書かれているスクリプト
<script type ="text/javascript">
<!--
function check(){
var errormsg="";
var mailerror=0;
if(document.f.name1.value==""){
errormsg+="※お名前が入力されていません\n";
}
if(document.f.kana1.value==""){
errormsg+="※フリガナが入力されていません\n";
}
if(document.f.postal.value==""){
errormsg+="※郵便番号が入力されていません。\n";
}
if(document.f.pref.value==""){
errormsg+="※都道府県が選択されていません。\n";
}
if(document.f.adress.value==""){
errormsg+="※住所が入力されていません。\n";
}
if(document.f.email.value==""){
errormsg+="※メールアドレスが入力されていません。\n";
mailerror=1;
}
if(document.f.email2.value==""){
errormsg+="※確認用メールアドレスが入力されていません。\n";
mailerror=1;
}
if(!mailerror){
if(document.f.email.value != document.f.email2.value){
errormsg+="※メールアドレスに間違いがあります。\n";
}
}
var mail=document.f.email.value;
var c;
var zen=false;
for(i=0;i<mail.length;i++){
c=mail.charCodeAt(i);
if(c >= 65345 && c<=65370){
errormsg+="※メールアドレスに全角文字が含まれています。\nメールアドレスは半角英数字を入力してください。\n";
zen=true;
break;
}
}
if(!zen){
var at=mail.indexOf("@");
var dot=mail.lastIndexOf(".");
var space=mail.indexOf(" ");
var ok=false;
if(at != -1 && at != 0 && dot != -1 && dot > at +1 && dot < mail.length -1 && space == -1){
ok=true;
}
if(!ok){
errormsg+="※メールアドレスが正しくありません。\n";
}
}
if(document.f.tel.value==""){
errormsg+="※お電話番号が入力されていません。\n";
}
if(document.f.haisou.checked==true){
if(document.f.name_rcpt1.value==""){
errormsg+="※お届け先のお名前が入力されていません\n";
}
if(document.f.kana_rcpt1.value==""){
errormsg+="※お届け先のフリガナが入力されていません\n";
}
if(document.f.postal_rcpt.value==""){
errormsg+="※お届け先の郵便番号が入力されていません。\n";
}
if(document.f.pref.selectedIndex == 0){
errormsg+="※お届け先の都道府県が選択されていません。\n";
}
if(document.f.adress_rcpt.value==""){
errormsg+="※お届け先の住所が入力されていません。\n";
}
if(document.f.tel_rcpt.value==""){
errormsg+="※お届け先の電話番号が入力されていません。\n";
}
}
var pay_flag=0;
var deliver_flag=0;
var pay="";
var deliver="";
for(i=0;i<document.f.elements.length;i++){
if(document.f.elements[i].name == "pay"){
pay_flag++;
}
else if(document.f.elements[i].name == "deliver"){
deliver_flag++;
}
}
if(pay_flag){
if(pay_flag > 1){
for(i=0;i<document.f.pay.length;i++){
if(document.f.pay[i].checked == true){
pay=document.f.pay[i].value;
break;
}
}
}
else{
if(document.f.pay.checked==true){
pay=document.f.pay.value;
}
}
}
if(deliver_flag){
if(deliver_flag > 1){
for(i=0;i<document.f.deliver.length;i++){
if(document.f.deliver[i].checked == true){
deliver=document.f.deliver[i].value;
break;
}
}
}
else{
if(document.f.deliver.checked==true){
deliver=document.f.pay.value;
}
}
}
if(errormsg){
alert(errormsg);
return false;
}
}
-->
</script>
お礼
早速ご回答頂き誠にありがとうございます。 yambejp様のおっしゃる通り、外部jsの文字コードの設定ミスで、文字コード を統一させてもう一度確認しましたら、問題なく動作致しました。 本当にありがとうございました。