7

それに応じて変数を設定するために、どの送信ボタンのクリックを追跡する必要がある状況があります。以下はテストコードです、

<script>
function submitForm(form) {
    alert(document.getElementById('sb').value);
    if (document.getElementById('sb').value=="One") {
        //Do something
    }
    return true;
}
</script>


<form action="" method="get" onsubmit="return submitForm(this);">
    <input type="submit" name="sb" value="One">
    <input type="submit" name="sb" value="Two">
    <input type="submit" name="sb" value="Three">
</form>

ボタン2または3をクリックしても、アラートには常に1が表示されます。ただし、URLはクリック可能なパラメータで変更されます。クリック可能な送信ボタンにある値を警告するにはどうすればよいですか?

注:JQueryを使用しないソリューションが必要です

編集:onsubmitがsubmitForm(this);を呼び出すコードビットを変更します。問題は、document.forms [0] .sbがdocument.getElementById('sb')と同じようにすべての送信ボタンのノードリストを返すため、未定義のdocument.forms[0].sb.valueを使用することです。

4

7 に答える 7

1

複数の送信ボタンではなく、ボタンを使用することをお勧めします。ボタンのonclick属性で、javascriptを使用してフォームを送信します。

于 2013-03-19T09:45:47.070 に答える
1

あなたはこのように試すことができます、

    <form>
        <input class="myButton" type="submit" name="sb" value="One">
        <input class="myButton" type="submit" name="sb" value="Two">
        <input class="myButton" type="submit" name="sb" value="Three">
    </form>

    <script type="text/javascript">
        $(".myButton").on('click', function() {
        alert($(this).val());
        });
    </script>
于 2014-10-15T11:51:15.310 に答える
1

私はjavascriptに少し慣れていません。私がこれについて間違っているなら、私を許してください。=ifステートメントに3番目の記号が付いていれば、違いはありませんか?

それは次のようになります:

if (document.getElementById('sb').value === "One") {
  //Do something
}
return true;
于 2015-12-11T06:48:55.200 に答える
1

これが、この問題のより簡単な解決策だと私が思うものです。追加のイベントは必要ありません。

<script>
function submitForm(form) {
    console.log(document.activeElement.value);
    if (document.activeElement.value == 'One') {
       console.log("Have one.");
       return false;
    }
    return true;
}

</script>


<form action="" method="get" onsubmit="return submitForm(this);">
    <input type="submit" name="sb" value="One">
    <input type="submit" name="sb" value="Two">
    <input type="submit" name="sb" value="Three">
</form>

jsfiddle

答えが欲しいのは、フォームがクエリを「?sb={value}」に設定する方法です。

于 2019-09-15T14:21:05.133 に答える
0

あなたはjqueryで次のようなものを試すことができます:

$(":submit").live('click', function() {
    alert($(this).val());
})
于 2013-03-19T09:46:43.987 に答える
0

上記の答えを続ける:

<script>
function m(value) {
alert(value);
}
</script>

<input type="button" value="One" onClick="m(this.value)">
<input type="button" value="Two" onClick="m(this.value)">
<input type="button" value="Three" onClick="m(this.value)">

もちろん、IDが何であるかを確認できます。

<input type="button" id='myId' value="Three" onClick="m(this.id)">
于 2013-03-19T09:53:36.297 に答える
0

これは、jquery以外の、クリックされた送信ボタンを検出するためのシンプルなソリューションです。

    <script>
function submitForm(form) {
    console.log(document.getElementById('btn_clicked').value);
    if (document.getElementById('btn_clicked').value === 'One') {
       console.log("Have one.");
       return false;
    }
    return true;
}
</script>

<form action="" method="get" onsubmit="return submitForm(this);" ;">

    <input type="hidden" name="btn_clicked" id="btn_clicked" value="">
    <input type="submit" name="sb" value="One" onclick="document.getElementById('btn_clicked').value='One';">
    <input type="submit" name="sb" value="Two" onclick="document.getElementById('btn_clicked').value='Two';">
</form>
于 2021-01-12T01:45:00.597 に答える