ラベルにこれと同じJavaScriptを使用しているので、送信フィールドで何が間違っているのかわかりません。
これが私の見解です:
@model SuburbanCustPortal.Models.OrderGasModel
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
$(function () {
$("#datepicker").datepicker(); });
</script>
<script>
$(function(){
$("#AccountId").change(function(){
var val=$(this).val();
$("#contactNumber").load("@Url.Action("GetMyValue","GasOrder")", { custid : val });
document.forms[0].Amount.focus(); }); });
</script>
@{
ViewBag.Title = "Order Gas"; }
<h2>Order Gas</h2>
@using (Html.BeginForm("OrderGasSuccess", "GasOrder", FormMethod.Post))
{
@Html.ValidationSummary(true, "Submit was unsuccessful. Please correct the errors and try again.")
<div>
<fieldset>
<legend>Account Information - all fields required</legend>
<div class="editor-label">
@Html.LabelFor(m => m.AccountNumber)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.AccountId, (IEnumerable<SelectListItem>)ViewBag.Accounts)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.TankPercent)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.TankPercent, new { @class = "GenericTextBox" })
@Html.ValidationMessageFor(m => m.TankPercent)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Amount)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Amount, new { @class = "GenericTextBox" })
@Html.ValidationMessageFor(m => m.Amount)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.DateRequested)
</div>
<div class="editor-field">
<input type="text" id="datepicker" class="GenericTextBox"/>
@Html.ValidationMessageFor(m => m.DateRequested)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.ContactNumber)
</div>
<div class="editor-field">
<input type="text" id="contactNumber" class="GenericTextBox"/>
@Html.ValidationMessageFor(m => m.ContactNumber)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Message)
</div>
<div class="editor-field">
@Html.EditorFor(x => x.Message)
</div>
<div>
<input type="submit" value="Submit" />
</div>
</fieldset>
</div>
}
呼び出されている私のメソッド:
public string GetMyValue(string custid)
{
var cust = _client.GetCustomerByCustomerId(Guid.Parse(custid));
return String.Format("{0:C}", Decimal.Parse(cust.TotalBalance));
}
GetMyValueメソッドが呼び出され、値が返されます。ドロップダウンリストにも値が入力されています。
ddlの値を変更すると、GetMyValueは起動しますが、入力ボックスは値を取得しません。
誰かが私が間違っているのを見ますか?
====更新====
以下のように変更しました。このメッセージが表示されたので、正しく実行したかどうかはわかりません。
Microsoft JScriptランタイムエラー:「val」は未定義です
これが私の見解です。
@model SuburbanCustPortal.Models.OrderGasModel
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script>
$(function () {
$("#datepicker").datepicker();
});
</script>
<script>
$.post("@Url.Action("GetMyValue","GasOrder")", { custid : val }, function(r){
$("#contactNumber").val(r.ContactNumber);
});
</script>
@{
ViewBag.Title = "Order Gas";
}
<h2>Order Gas</h2>
@using (Html.BeginForm("OrderGasSuccess", "GasOrder", FormMethod.Post))
{
@Html.ValidationSummary(true, "Submit was unsuccessful. Please correct the errors and try again.")
<div>
<fieldset>
<legend>Account Information - all fields required</legend>
<div class="editor-label">
@Html.LabelFor(m => m.AccountNumber)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.AccountId, (IEnumerable<SelectListItem>)ViewBag.Accounts)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.TankPercent)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.TankPercent, new { @class = "GenericTextBox" })
@Html.ValidationMessageFor(m => m.TankPercent)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Amount)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.Amount, new { @class = "GenericTextBox" })
@Html.ValidationMessageFor(m => m.Amount)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.DateRequested)
</div>
<div class="editor-field">
<input type="text" id="datepicker" class="GenericTextBox"/>
@Html.ValidationMessageFor(m => m.DateRequested)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.ContactNumber)
</div>
<div class="editor-field">
<input type="text" id="contactNumber" class="GenericTextBox"/>
@Html.ValidationMessageFor(m => m.ContactNumber)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Message)
</div>
<div class="editor-field">
@Html.EditorFor(x => x.Message)
</div>
<div>
<input type="submit" value="Submit" />
</div>
</fieldset>
</div>
}
私はjavascriptを初めて使用するので、これが些細な変更である場合はお詫び申し上げます。