私の ASP.NET MVC アプリケーションには、Scripts フォルダーの下の JavaScript ファイルに jquery 関数を持つ JavaScript ファイルがあります。関数はドロップダウン クリック イベントをリッスンし、以下のように選択した値でテキスト ボックスを埋めますが、ドロップ ダウン オプションをクリックすると、このメソッドは呼び出されず、値はテキスト ボックスに設定されません。デバッガー (F12) で実行するときに、関数をデバッガーのコマンド ラインに貼り付けると、ドロップダウンをクリックすると機能します!!!! メソッドが javascript ファイルから登録されていない理由がわかりません。ドロップダウン メニューと入力テキスト ボックスは、bootstrap input-group を使用して作成されます。ドロップダウンは最初は空で、setup() 関数でファイルから読み取ることによって入力されます。
// In test.js
var testMap = {}
$(function () {
$("#dropdownlistId li a").click(function () {
var name = $(this).text();
$("#textBoxId").val(name);
});
});
function setup() {
// Read name and value pair in testMap
...
// Append names to drop down list
$.each(testMap, function (key, value) {
$("#dropdownlistId").append("<li> <a tabindex=\"-1\" href=\"#\"> " + key + "</a> </li>");
});
}
$(document).ready(function () {
setup();
});
私のcshtmlファイルでは、次のようにjavascriptファイルを呼び出しています。
@section Scripts {
@Scripts.Render("~/scripts/test.js")
}
<div class="col-md-3">
<div class="input-group">
<input id="textBoxId" type="text" class="form-control" placeholder="Enter name" />
<div class="input-group-btn">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
</button>
<ul id="dropdownlistId" class="dropdown-menu pull-right"></ul>
</div>
</div>
</div>