2017-10-27 6 views
0

VBScriptでClassic ASPを使用し、いくつかのフリーテキストフィールド、日付ピッカー、オプションがいくつかあるドロップダウンリストを使用するWebフォーム(HTML5準拠です)さまざまなSQLクエリから取得します。HTMLドロップダウンonChange値はSQLクエリーで使用されます

ドロップダウンリストの1つは、前のドロップダウンからの選択に依存するオプションを表示する必要があります。

javascript onChangeを使用して選択されたオプションを取得し、現在のget_boilerスクリプトが行うものですが、これを表示することはできますが、表示に使用されているクエリでそのメソッドを使用する方法を考えることができません

OnChangeによって値が取得されているドロップダウンは「Installed Boiler Make」であり、SQLクエリの一部としてその値を使用するドロップダウンは「Installed Boiler Model」

です。

クエリーストリングとして値をプッシュしてフォームを再ロードすることを考えましたが、以前に入力した値がすべて失われてしまいました。これは目的の結果ではありません。

誰かが私を正しい方向に向けることができますか? 選択した値を使用する必要があるクエリは、 "models"というレコードセットです。私は置きました ???? SQLクエリの一時的な値として使用します。

うまくいけば私はこれを正しく説明し、適切なタグを投稿に使いました。 私は私のために仕事をする人を探しているわけではなく、ちょうど正しい方向に私を向ける。私はこれと同じですが、同じことをしようとしていた何かを見つけられなかった問題のためのStackoverflowを通して良い見解を持っていました。ここで

<!--#include virtual="/includes/functions.asp"--> 

<!DOCTYPE html> 

<% 
Call OpenDB() 
Call OpenRecordSet(heatcontrols, "select callmd3_field_no, callmd3_listitem from dbo.Call_More_Def3 where callmd3_link_to_def1 = 'LOG' and callmd3_field_no = '170' and callmd3_listorder not in ('1') order by callmd3_listorder") 
Call OpenRecordSet(maincontrols, "select callmd3_field_no, callmd3_listitem from dbo.Call_More_Def3 where callmd3_link_to_def1 = 'LOG' and callmd3_field_no = '168' and callmd3_listorder not in ('1') order by callmd3_listorder") 
Call OpenRecordSet(installtype, "select callmd3_field_no, callmd3_listitem from dbo.Call_More_Def3 where callmd3_link_to_def1 = 'LOG' and callmd3_field_no = '171' and callmd3_listorder not in ('1') order by callmd3_listorder") 
Call OpenRecordSet(makes, "select make from lu_make where make not in ('-') order by make") 
Call OpenRecordSet(models, "select model from lu_model where link_to_make = '????' order by model") 
%> 

<html> 

<head> 
    <title>TEST</title> 
    <meta charset="UTF-8"> 
    <link rel="stylesheet" href="/includes/css/installer.css"/> 
    <link rel="stylesheet" href="/includes/datepicker/jquery.ui.all.css"/> 
    <script type="text/javascript" src="/includes/scripts/jquery.min.js"></script> 
    <script type="text/javascript" src="/includes/scripts/jquery-1.7.1.js"></script> 
    <script type="text/javascript" src="/includes/scripts/jquery.ui.core.js"></script> 
    <script type="text/javascript" src="/includes/scripts/jquery.ui.datepicker.js"></script> 

    <script> 
     $(function() { 
     $("#surveydate").datepicker({ 
       dateFormat: 'dd MM yy' 
      }); 
     }); 
    </script> 

    <script type="text/javascript"> 
     function get_boiler(){ 
      document.getElementById("boilervalue").innerHTML = document.getElementById("boilermake").value; 
     return true; 
     } 
    </script> 

    <script type="text/javascript" src="/includes/scripts/update-validate.js"></script> 
    <script type="text/javascript" src="/includes/scripts/update-showhide.js"></script> 
</head> 

<body> 

<div class="popup-content"> 

    <form method="POST" name="updatejob" action="/includes/update.asp" onsubmit="return validateForm()"> 
     <h1>TEST FORM</h1> 
     <br/> 
     <b>Surveyor</b> 
     <br/> 
     <input type="text" name="surveyor" id="surveyor" maxlength="50" class="addjobmenudropmedium"> 
     <br/><br/> 
     <b>Survey Date</b> 
     <br/> 
     <input type="text" name="surveydate" id="surveydate" class="addjobmenudropmedium"> 
     <br/><br/> 
     <b>Heating Controls (with boiler install)</b> 
     <br/> 
     <select name="continst" id="continst" class="addjobmenudropsmall"> 
      <option value="">Select.....</option> 
      <% WHILE (NOT heatcontrols.EOF) %> 
       <option value="<%=heatcontrols.Fields("callmd3_listitem").value %>"><%=heatcontrols.Fields("callmd3_listitem").value %></option> 
      <% heatcontrols.movenext() 
      Wend %> 
     </select> 
     <br/><br/> 
     <b>Main Heating Controls</b> 
     <br/> 
      <select name="heatcon" id="heatcon" class="addjobmenudrop"> 
       <option value="">Select.....</option> 
       <% WHILE (NOT maincontrols.EOF) %> 
        <option value="<%=maincontrols.Fields("callmd3_listitem").value %>"><%=maincontrols.Fields("callmd3_listitem").value %></option> 
       <% maincontrols.movenext() 
       Wend %> 
      </select> 
     <br/><br/>  
     <b>Install Type</b> 
     <br/> 
      <select name="installtype" id="installtype" class="addjobmenudrop"> 
       <option value="">Select.....</option> 
       <% WHILE (NOT installtype.EOF) %> 
        <option value="<%=installtype.Fields("callmd3_listitem").value %>"><%=installtype.Fields("callmd3_listitem").value %></option> 
       <% installtype.movenext() 
       Wend %> 
      </select> 
     <br/><br/> 
     <b>Installed Boiler Make</b> 
     <br/> 
     <select name="boilermake" id="boilermake" class="addjobmenudrop" onChange="get_boiler()"> 
      <option value="">Select.....</option> 
      <% WHILE (NOT makes.EOF) %> 
       <option value="<%=makes.Fields("make").value %>"><%=makes.Fields("make").value %></option> 
      <% makes.movenext() 
      Wend %> 
     </select> 
     <br/><br/> 
     <b>Installed Boiler Model</b> 
     <br/> 
     <select name="boilermodel" id="boilermodel" class="addjobmenudrop"> 
      <option value="">Select.....</option> 
      <% WHILE (NOT models.EOF) %> 
       <option value="<%=models.Fields("model").value %>"><%=models.Fields("model").value %></option> 
      <% models.movenext() 
      Wend %> 
     </select>  
     <br/><br/> 
     <b>Installed Boiler Serial Number</b> 
     <br/> 
     <input type="text" name="boilerserial" id="boilerserial" maxlength="50" class="addjobmenudropmedium"> 
     <br/><br/> 
     <b>Notes</b> 
     <br/> 
     <textarea name="notes" id="notes" rows="5" cols="62" maxlength="1000" class="addjobtextbox"></textarea> 
     <br/><br/><br/> 
     <input type="submit" value="UPDATE JOB" name="Submit" class="formbutton"> 
     <br/><br/><br/> 
    </form> 

</div> 

<% 
Call CloseRecordSet(heatcontrols) 
Call CloseRecordSet(maincontrols) 
Call CloseRecordSet(installtype) 
Call CloseRecordSet(makes) 
Call CloseRecordSet(models) 
Call CloseDB() 
%> 

</body> 
</html> 

形式のライブバージョンです - http://www.chenks.co.uk/form.asp

+0

あなたは、いくつかの変数にすべてのモデルを取得するためにクエリを使用し、フィルタクライアント側の適用のいずれか。または、選択したパラメータに基づいてクエリを実行し、Ajax経由で対応するモデルを返す他のページ/スクリプトを呼び出す必要があります。 – Danmoreng

+0

モデルのSQLクエリに「make」を選択して、モデルのドロップダウンリストを作成する必要があります。 また、モデルドロップダウンリストは、ドロップダウンオプションが変更されるたびに(フォームページ全体を更新せずに)リフレッシュされます。 私はAjaxについて何も知らないので、それが将来の道であれば、私のためにいくつかの新しい知識が必要になります。 – chenks

答えて

1

私はまだASPでプログラムしませんでしたが、私はそれはあなたがPHPでそれを行うのと同じように動作推測:

作成ドロップダウンのために必要なコンテンツで「ModelsDropdown.asp」のようなものと呼ばれる新しいページ:

<!--#include virtual="/includes/functions.asp"--> 

<% 
Call OpenDB() 
Call OpenRecordSet(models, "select model from lu_model where link_to_make = url_parameter_make order by model") 
%> 

    <option value="">Select.....</option> 
    <% WHILE (NOT models.EOF) %> 
     <option value="<%=models.Fields("model").value %>"><%=models.Fields("model").value %></option> 
    <% models.movenext() 
    Wend %> 

<% 
Call CloseRecordSet(models) 
Call CloseDB() 
%> 

私にはわからないどのようにASPでURLパラメータを使用しますが、私はあなたが願っています。 http://www.chenks.co.uk/ModelsDropdown.asp?make=some_make を開くと、渡されたmakeの選択オプションだけが吐き出されるはずです。

今、あなたがこのコンテンツを取得するとJavaScript/Ajaxを介して、元のフォームにそれを置くことができます。

$("#boilermake").on("change", function(){ 
    // Use jQuery get to call your new page with the selected make as parameter 
    $.get("/ModelsDropdown.asp", {make: $("#boilermake")[0].value}, function(data){ 
     // paste the select options into the DOM 
     $("#boilermodel").html(data); 
    }); 
}); 
+0

これは面白い解決策です。うまくいくかのように見えますが、遊びとテストが必要です。しかし本来、古典的なaspとphpの違いは小さく、理論も同じです。 URLパラメータは2つの場合でほぼ同じです。 – chenks

+0

これは単なるクイックバージョンでしたが、通常はAjax経由でHTMLコード全体を送信するのではなく、データだけを送信し、JavaScriptを使用してデータクライアント側からHTMLを生成したいと考えています。しかし、私は今すぐに行く必要があります、多分もっと後で今日説明することができます。 – Danmoreng

+0

をテストしたところ、うまくいきました(一度私はHTMLの一番下にスクリプトを置く必要があったのを覚えています)。 ライブページが正常に動作するように更新しました。 – chenks

関連する問題