私は C# で ASP.NET Web フォーム アプリケーションに取り組んでいます。クライアント側の Javascript を (OnClientClick 属性を使用して) 実行し、クライアント側のコードが true を返す場合は (OnClick を使用して) サーバー側のコードを実行する必要があるボタンがあります。jQuery-ui 確認ダイアログでこれを何度も行ったことがありますが、今回はクライアント側のコードが確認ダイアログではなく、機能していません。サーバー側 (OnClick) イベントはトリガーされません私は明示的にtrueを返していますが。
問題のクライアント側コードは次のとおりです (alert() 呼び出しで正しい値が返されることを確認しました)。
<script type="text/javascript">
//Function to hide edit fields
function hideEditFields(retVal) {
//Hide all edit divs
var editName = document.getElementsByClassName("editField");
for (i = 0; i < editName.length; i++) {
editName[i].style.display = 'none';
}
//Show all view divs
var viewName = document.getElementsByClassName("viewField");
for (i = 0; i < viewName.length; i++) {
viewName[i].style.display = 'block';
}
//Make investigated & corrective action checkboxes non-highlighted
$('<%=cbInvestigatedY.ClientID%>').removeClass("editable");
$('<%=cbInvestigatedN.ClientID%>').removeClass("editable");
$('<%=cbCorrectiveY.ClientID%>').removeClass("editable");
$('<%=cbCorrectiveN.ClientID%>').removeClass("editable");
//Show edit button
var editButton = document.getElementById("editButton");
editButton.style.display = 'block';
//Hide save button
var saveButton = document.getElementById("saveButton");
saveButton.style.display = 'none';
//alert("returning " + retVal);
return retVal;
}
</script>
この関数を呼び出すボタンは次のとおりです。
<asp:Button ID="btnSaveChanges" runat="server" OnClientClick="return
hideEditFields(true);" OnClick="btnSubmit_Click" Text="Save Changes" />
私はこれを使って試しましたがUseSubmitBehavior="true"
、違いはないようです。Javascript コンソールにエラーは表示されず、Javascript コードは本来の動作をしています。サーバー側のメソッドを呼び出していないだけです。
送信ボタンが ASP.NET によって (ビュー ソースで) レンダリングされる方法は次のとおりです。
<input type="submit" name="ctl00$MainContent$btnSaveChanges" value="Save Changes"
onclick="return hideEditFields(true);WebForm_DoPostBackWithOptions(new
WebForm_PostBackOptions("ctl00$MainContent$btnSaveChanges", "",
true, "", "", false, false))"
id="ctl00_MainContent_btnSaveChanges" />