フォーム要素を循環してオブジェクトを構築するJavaScriptコードがあります。HTML入力フィールドとASP.NET入力フィールドが混在しています。ASP.NETはフィールドのIDをxxxxx_yyyy_idの形式に変更するため、split関数を使用して元のIDを抽出しようとしています。
// Iterate over all the text fields and build an object
$(':text').each(function () {
var tokens = this.id.split("_");
if (tokens.length = 3) {
// Assume this is a .net inputbox - extract the original id
inFormData[tokens[2]] = this.value;
} else {
inFormData[this.id] = this.value;
}
});
上記のコードをステップスルーすると、最初のIDはctl00_ContentPlaceHolderCol1_forenameFieldであるため、tokens.length=3コードが実行されます。2回目の反復では、idはforenameField2であるため、tokens.lengthは1であると予想されますが、実際には3です。elseステートメントは実行されません。
これは単純なことかもしれませんが、私はそれを解決することはできません。トークン配列を調べると、2回目の反復では要素が1つしかありません。また、各反復後にarray.lengthを0に設定してみました。
助けていただければ幸いです。