私は開発に比較的慣れておらず、主に DBMS として MSSQL '05 を使用し、処理とマークアップには ColdFusion 8 を使用しています。ユーザーがドロップダウン (選択) メニューから特定の選択肢を設定したときに、(単純なテキスト/入力タイプ) フィールドに動的に入力する必要があります。この値は、DB 内の単一のレコードから取得されます。私はこのコードを見つけてうまく適応させました:
ただし、これは1次元配列に対してのみ機能します...私のアプリケーションのコンテキストでは、2次元配列cfif
またはcfswitch
コードのかなり大きなブロックが必要です。これは、基本的なルールの1つであるDRYを破りますまた、cfif
コードはフィールドの動的な変化(とにかく、私が知っていることではありません)
a)このビットですでに使用していて、b)より多くのJSを学びたいので、JSソリューションを好みます。また、コードをよりコンパクトで読みやすいものにするために、このコードを再配置する方法 (特に配列要素の設定) についても意見を求めています。私はまだ JS にはあまり慣れていませんが、CF にはかなりの能力があると感じています。
コードのすべての関連部分を含めたと思いますが、もっと見たい場合は、返信でお知らせください。残りは掲載します。SOersの皆さん、よろしくお願いします!
PS: わかりやすくするために、ビジネス ロジックについても説明する必要があると思います。DB は、ここで作業を開始する前に作成されたものであり、'location' 変数と 'type' 変数のインデックス作成を念頭に置いて設計されたものではありません。たとえば、ユーザーがロケール 'West' ([2]) でタイプ 'hair' ([3]) のテストを行っており、'amt' フォーム フィールドに次のように入力したいとします。これら2つの基準に入るとすぐに。したがって、コードは 'amt' を LOC[2][3] に設定するか、直接#rsf.phr#
.
コード:
<query name="rsf" datasource="test">
SELECT * FROM fees WHERE company = '#trim(rsc.clientname)#'
</cfquery>
<script type="text/javascript">
var LOC = new Array(6);
for (var i=0; i < 6; i++){
LOC[i] = new Array(8);
}
<cfoutput>
LOC[0][0] = "";
LOC[0][1] = "#rsf.pua#";
LOC[0][2] = "#rsf.pba#";
LOC[0][3] = "#rsf.phr#";
LOC[0][4] = "#rsf.pbld#";
LOC[0][5] = "#rsf.pdna#";
LOC[0][6] = "#rsf.ppt#";
LOC[0][7] = "#rsf.pphy#";
LOC[1][0] = "";
LOC[1][1] = "#rsf.pua#";
LOC[1][2] = "#rsf.pba#";
LOC[1][3] = "#rsf.phr#";
LOC[1][4] = "#rsf.pbld#";
LOC[1][5] = "#rsf.pdna#";
LOC[1][6] = "#rsf.ppt#";
LOC[1][7] = "#rsf.pphy#";
LOC[2][0] = "";
LOC[2][1] = "#rsf.pua#";
LOC[2][2] = "#rsf.pba#";
LOC[2][3] = "#rsf.phr#";
LOC[2][4] = "#rsf.pbld#";
LOC[2][5] = "#rsf.pdna#";
LOC[2][6] = "#rsf.ppt#";
LOC[2][7] = "#rsf.pphy#";
LOC[3][0] = "";
LOC[3][1] = "#rsf.pua#";
LOC[3][2] = "#rsf.pba#";
LOC[3][3] = "#rsf.phr#";
LOC[3][4] = "#rsf.pbld#";
LOC[3][5] = "#rsf.pdna#";
LOC[3][6] = "#rsf.ppt#";
LOC[3][7] = "#rsf.pphy#";
LOC[4][0] = "";
LOC[4][1] = "#rsf.mpua#";
LOC[4][2] = "#rsf.mpba#";
LOC[4][3] = "#rsf.mphr#";
LOC[4][4] = "#rsf.mpbld#";
LOC[4][5] = "#rsf.mpdna#";
LOC[4][6] = "#rsf.mppt#";
LOC[4][7] = "#rsf.mpphy#";
LOC[5][0] = "";
LOC[5][1] = "#rsf.cpua#";
LOC[5][2] = "#rsf.cpba#";
LOC[5][3] = "#rsf.cphr#";
LOC[5][4] = "#rsf.cpbld#";
LOC[5][5] = "#rsf.cpdna#";
LOC[5][6] = "#rsf.cppt#";
LOC[5][7] = "#rsf.cpphy#";
</cfoutput>
function LOC(){
x = document.getElementById("location");
}
function CHOICE(){
y = document.getElementById("type");
document.getElementById("LOC").value = LOC[x.selectedIndex][y.selectedIndex];
}
</script>
<tr>
<td><br><b>Encounter Information:</b></td>
</tr>
<cfoutput>
<tr><td style="vertical-align:top">
CoC:<input type="text" name="coc" size="10" maxlength="20" value="">
Auth. No.: <input type="text" name="auth" size="10" maxlenght="20" value="">
Reason:<select name="reason" id="reason">
<option value="Pre-Emp">Pre-Employment</option>
<option value="Random">Random</option>
<option value="Post Acc.">Post-Accident</option>
<option value="RTD">RTD(Return-to-Duty)</option>
<option value="Reason. Sus">Reasonable Suspicion</option>
<option value="Personal">Personal</option> </select>
Type:<select name="type" id="type" onChange="CHOICE();">
<option value="0"></option>
<option value="1">UA</option>
<option value="2">BA</option>
<option value="3">Hair</option>
<option value="4">Blood</option>
<option value="5">DNA</option>
<option value="6">Paternity</option>
<option value="7">Physical</option></select><br>
Amt:$<input type="text" id="TP" name="amt">
<form>
<input type="checkbox" name="obs" value="Y"><em>Observed</em>
<input type="checkbox" name="dot" value="Y"><em>DOT</em>
Location:<select name="location" id="location" onChange="LOC();">
<option value="0"></option>
<option value="1">Amidon</option>
<option value="2">West</option>
<option value="3">Tyler</option>
<option value="4">Mobile</option>
<option value="5">Callout</option></select>