概要: 通常はポストバックをトリガーする asp.net ボタンを使用する代わりに、html を使用してボタンを作成します。最初に正規表現の検証をチェックする JavaScript 関数を html ボタンで実行し、次に (有効な場合) ポストバック関数を実行します。
まず、サーバー側のコードをトリガーするために使用する asp.net ボタンを削除し、クライアント側のボタンに置き換えます。このボタンの作成にサポートが必要な場合は、私の別の回答の手順に従うことができます。リンクは次のとおりです。
https://stackoverflow.com/questions/14062993/input-type-image-onclick-will-trigger-its-event-but-not-act-well-on-funct/14063911#14063911-スタック オーバーフロー
次に、javascript 関数は最初に正規表現関数を使用してデータを検証する必要があります。次のようなものを使用します。
function validateCombobox(myComboboxValue) {
if(myComboboxValue.match(regularExpressionString)===null){
return false
} else {
return true
};
};
***注: 正規表現は私にとって苦手分野なので、このスクリプトを少し修正する必要があるかもしれません。
3 番目に、上記のスクリプトを使用して入力が検証された場合は、javascript を使用してポストバックを呼び出します。これを行うには、次の手順を実行します。
- ASP ページに を作成します。これがないと、必要なボタンクリック イベントのイベント ハンドラーがサイトで生成されないため、これが必要です。
リンクボタンの css 表示プロパティを「なし」に設定します。リンク ボタンの "Visible" 属性が true に設定される可能性があることに注意してください (これは、asp.net が false の visible 属性を持つコントロールのコードをレンダリングすることさえしないためです)。たとえば、リンク ボタンの cssClass 名が myButton の場合、これを css ファイルに追加します。
.myButton
{
display: none;
}
ボタンが作成され、適切に非表示になったので、JavaScript 関数にポストバック関数を追加できます。ポストバック関数には 2 つのパラメーターがあります。最初のパラメーターは、作成したリンク ボタン コントロールのクライアント側 IDです。asp.net コントロールのクライアント側 ID は、開発中に割り当てる ID とは異なることに注意してください。このため、 <%=Control.ClientId %> を使用してコントロールのクライアント IDを取得します。リンク ボタン ID が「myLinkButton」の場合、ポストバック関数は次のようになります。
__doPostBack('<%=myLinkButton.clientid %>','')
この関数の先頭に2 つのアンダースコア文字があることに注意してください。
以下は、新しいボタンによって呼び出される正規表現検証関数と JavaScript 関数の例です。
function validateCombobox(myComboboxValue) {
if(myComboboxValue.match(regularExpressionString)===null){
return false
} else {
return true
};
};
function comboBoxButton_click(){
var myComboboxValue = $('#<%=myComboBox.clientid %>').val();
if(validateCombobox(myComboboxValue)==true){
__doPostBack('<%=myLinkButton.clientid %>','');
};
};
私は今、気を散らすことがたくさんあり、少し頭がおかしくなっているので、これらの指示が少し混乱している場合はご容赦ください. さらにサポートが必要な場合は、お気軽にコメントしてください。すぐに確認します。