ASP.netWebアプリケーションに取り組んでいます。
送信ボタンのあるフォームがあります。送信ボタンのコードは次のようになり<input type='submit' value='submit request' onclick='btnClick();'>
ます。
私は次のようなものを書きたいです:
function btnClick() {
if (!validData())
cancelFormSubmission();
}
どうすればよいですか?
ASP.netWebアプリケーションに取り組んでいます。
送信ボタンのあるフォームがあります。送信ボタンのコードは次のようになり<input type='submit' value='submit request' onclick='btnClick();'>
ます。
私は次のようなものを書きたいです:
function btnClick() {
if (!validData())
cancelFormSubmission();
}
どうすればよいですか?
あなたはやったほうがいいです...
<form onsubmit="return isValidForm()" />
isValidForm()
が返された場合false
、フォームは送信されません。
また、おそらくイベントハンドラーをインラインから移動する必要があります。
document.getElementById('my-form').onsubmit = function() {
return isValidForm();
};
入力を次のように変更します。
<input type='submit' value='submit request' onclick='return btnClick();'>
そして、関数でfalseを返します
function btnClick() {
if (!validData())
return false;
}
変更する必要があります
onclick='btnClick();'
に
onclick='return btnClick();'
と
cancelFormSubmission();
に
return false;
そうは言っても、優れたイベント処理APIを備えたライブラリ(YUIやjQueryなど)を備えた控えめなJSを優先して、本質的なイベント属性を避け、本当に重要なイベント(つまり、フォームの送信イベント)に結び付けようとしています。ボタンのクリックイベントの)。
submit
タイプをからに変更する必要がありますbutton
:
<input type='button' value='submit request'>
それ以外の
<input type='submit' value='submit request'>
次に、JavaScriptでボタンの名前を取得し、必要なアクションをそれに関連付けます
var btn = document.forms["frm_name"].elements["btn_name"];
btn.onclick = function(){...};
それが役立つことを願って私のために働いた。
onsubmit
asp.netでは機能しない場合があります。
とても簡単な方法で解決しました。
そのような形があれば
<form method="post" name="setting-form" >
<input type="text" id="UserName" name="UserName" value=""
placeholder="user name" >
<input type="password" id="Password" name="password" value="" placeholder="password" >
<div id="remember" class="checkbox">
<label>remember me</label>
<asp:CheckBox ID="RememberMe" runat="server" />
</div>
<input type="submit" value="login" id="login-btn"/>
</form>
これで、フォームのポストバックの前にそのイベントをキャッチしてポストバックから停止し、このjqueryを使用して必要なすべてのajaxを実行できます。
$(document).ready(function () {
$("#login-btn").click(function (event) {
event.preventDefault();
alert("do what ever you want");
});
});
あなたがする必要がありますreturn false;
:
<input type='submit' value='submit request' onclick='return btnClick();' />
function btnClick() {
return validData();
}
これは非常に古いスレッドですが、注目されることは間違いありません。したがって、提供されるソリューションは最新ではなく、最新のJavascriptの方がはるかに優れていることに注意してください。
<script>
document.getElementById(id of the form).addEventListener(
"submit",
function(event)
{
if(validData() === false)
{
event.preventDefault();
}
},
false
);
フォームは、送信を監視するイベントハンドラーを受け取ります。呼び出された関数validData(ここには表示されていません)がFALSEを返した場合、メソッドPreventDefaultを呼び出します。これにより、フォームの送信が抑制され、ブラウザーが入力に戻ります。それ以外の場合、フォームは通常どおり送信されます。
PSこれは属性onsubmitでも機能します。次に、匿名関数function(event){...}は、フォームの送信時に属性に含まれている必要があります。これは実際には最新ではなく、送信用に1つのイベントハンドラーでのみ作業できます。ただし、余分なJavaScriptを作成する必要はありません。さらに、フォームの属性としてソースコードで直接指定でき、フォームがDOMに統合されるまで待つ必要はありません。
送信ボタンを通常のボタンに変更し、クリックイベントで、検証テストに合格した場合はフォームを送信してみませんか?
例えば
<input type='button' value='submit request' onclick='btnClick();'>
function btnClick() {
if (validData())
document.myform.submit();
}
必要onSubmit
です。そうでonClick
なければ、誰かがEnterキーを押すだけで、検証がバイパスされます。キャンセルも。falseを返す必要があります。コードは次のとおりです。
<form onSubmit="return btnClick()">
<input type='submit' value='submit request'>
function btnClick() {
if (!validData()) return false;
}
編集onSubmitはformタグに属しています。
それは単純で、falseを返すだけです。
以下のコードは、jqueryを使用して送信ボタンのonclick内に入ります。
if(conditionsNotmet)
{
return false;
}
JQueryを使用すると、さらに簡単になります。Asp.NetMVCおよびAsp.Coreで機能します。
<script>
$('#btnSubmit').on('click', function () {
if (ValidData) {
return true; //submit the form
}
else {
return false; //cancel the submit
}
});
</script>
使用するonclick='return btnClick();'
と
function btnClick() {
return validData();
}
function btnClick() {
return validData();
}
<input type='button' onclick='buttonClick()' />
<script>
function buttonClick(){
//Validate Here
document.getElementsByTagName('form')[0].submit();
}
</script>