0

ID 要素の使用に問題があります。基本的に、ユーザーが特定のコードに関連する電話番号を入力できる単純な html フォームを作成し、検証して特定のフォルダーに送信する必要があります。

ただし、ユーザーが必要な数の電話番号を入力できるようにしたいと考えています。したがって、クローン手法を使用することは理にかなっているように思えました。ただし、この方法を使用することのマイナス面は、ID が常に同じであることです。つまり、電話番号の入力に誤りがある場合、検証ルールに一致しない入力テキストをユーザーに参照させることはできません。

私はすでにいくつかのことを試しましたが、ID 要素 'Tel' を 1 ずつインクリメントする方法、または各入力テキストを検証する方法がわかりません。

以下に私のコードがあります。getElementsByName メソッドを使用したのは、Firefox が各入力名に増分番号を自動的に割り当てるためです。ただし、使用される入力テキストごとに ID を 1 ずつインクリメントする方法を見つけることができれば、この方法を使用したいと思います。私はすべての提案に対してオープンですが、JQuery に慣れていないため、プレーンな JavaScript を使用することを好みます。

事前にt​​hx。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SMS</title>
</head>
<body>

<script type="text/javascript">

var counter = 0;

function moreFields() {
    counter++;
    var newFields = document.getElementById('readroot').cloneNode(true);
    newFields.id = '';
    newFields.style.display = 'block';
    var newField = newFields.childNodes
    for (var i=0;i<newField.length;i++) {
        var theName = newField[i].name;
        if (theName)
            newField[i].name = theName + counter;
    }
    var insertHere = document.getElementById('writeroot');
    insertHere.parentNode.insertBefore(newFields,insertHere);
}

window.onload = moreFields;


function checkPhone() {

var x=document.getElementsByName("Tel").length;


var TotTel = new Array();

for(i = 0; i < x; i++)
{
TotTel[i] += document.getElementsByName('PhoneNumber')[i].value;


if(TotTel[i] == "" || TotTel[i] == null)
{
alert("Please enter a phone number");
return false;
}

else if(isNaN(TotTel[i]))
{
    alert("You can only enter numbers");
    return false;
}
}
alert("Validation ok");
return true;
}

</script>


<div id="readroot" style="display:none">

    <input type="button" value="Remove field" onclick="this.parentNode.parentNode.removeChild(this.parentNode);"  /><br /><br />

    Phone number:   <input name="PhoneNumber" class="Tel" id="Tel" />

    SMSCode: <select name="SMSCodes">
        <option>Codes</option>
        <option value="B2BNL"> B2BNL </option>
        <option value="B2BFR"> B2BFR </option>
        <option value="B2BEN"> B2BEN </option>
        <option value="B2CNL"> B2CNL </option>
        <option value="B2CFR"> B2CFR </option>
        <option value="B2CEN"> B2CEN </option>
        <option value="AMNL"> AMNL </option>
        <option value="AMFR"> AMFR </option>
        <option value="PMNL"> PMNL </option>
        <option value="PMFR"> PMFR </option>
        <option value="PMPNL"> PMPNL </option>
        <option value="PMPFR"> PMPFR </option>
        <option value="BWAYAM"> BWAYAM </option>
        <option value="BWAYPM"> BWAYPM </option>
        <option value="BWAYPMP"> BWAYPMP </option>
        <option value="BWAY18"> BWAY18 </option>
        <option value="SPEOSNL1114"> SPEOSNL1114 </option>
        <option value="SPEOSFR1114"> SPEOSFR1114 </option>
        <option value="SPEOSNL1417"> SPEOSNL1417 </option>
        <option value="SPEOSFR1417"> SPEOSFR1417 </option>
        <option value="SPEOSNL1721"> SPEOSNL1721 </option>
        <option value="SPEOSFR1721"> SPEOSFR1721 </option>  
    </select><br /><br />
</div>

<form name="SMSForm" action="" onsubmit="checkPhone()" method="post">

    <span id="writeroot"></span>

    <input type="button" onclick="moreFields()" value="More Phone numbers" />
    <input type="submit" value="Send" />

</form>

</body>
</html>
4

1 に答える 1