2

私には形があります。JQuery を使用して 2 つのボタンを追加します。このボタンの名前を取得するにはどうすればよいですか?

<form id="frm">
</form>
//JQuery:
    $("#frm").append('<input class="btn" type="submit" name="GoTest"  value="Preview"/>');
    $("#frm").append('<input class="btn" type="submit" name="GoTest1" value="Next"/>'); 
$("#frm").on("click",  function () {
if (this...=="Next")
 {
  alert("It's button Next");
 }else
 {
  alert("It's button Preview");
 }
});
4

7 に答える 7

1

ボタンの名前は、ボタンのと同じではありません。

$("#frm").on("click",  function (ev) {
    alert($(ev.currenTarget).prop('name'));
}
于 2013-08-16T15:11:30.697 に答える
1

デモ: jsFiddle

HTML:

<form id="frm"></form>

JS:

$(function () {
    $("#frm").append('<input class="btn" type="submit" name="GoTest"  value="Preview"/>');
    $("#frm").append('<input class="btn" type="submit" name="GoTest1" value="Next"/>');
    $("#frm > .btn").on("click", function (e) {
        e.preventDefault();
        if ($(this).val() == "Next") {
            alert("It's button Next");
        } else {
            alert("It's button Preview");
        }
    });
});

簡略化されたコード:

$(function () {
    $("#frm").append('<input class="btn" type="submit" name="GoTest"  value="Preview"/>');
    $("#frm").append('<input class="btn" type="submit" name="GoTest1" value="Next"/>');
    $("#frm > .btn").on("click", function (e) {
        e.preventDefault();

        alert("It's button " + $(this).val());
    });
});

クラス属性を使用しない: jsFiddle

$(function () {
    $("#frm").append('<input class="btn" type="submit" name="GoTest"  value="Preview"/>');
    $("#frm").append('<input class="btn" type="submit" name="GoTest1" value="Next"/>');
    $("#frm > [name^='GoTest']").on("click", function (e) {
        e.preventDefault();

        alert("It's button " + $(this).val());
    });
});

ドキュメンテーション:

[attribute^=value]: name 属性値が value で始まるすべての要素。

更新: child プロパティを使用するには、e.preventDefault() がhtml タグの自動POSTを停止することに注意してください。FORM

于 2013-08-16T15:12:10.080 に答える
1

次のイベント委任構文を使用する必要があります.on()

 $("#frm").append('<input class="btn" type="submit" name="GoTest"  value="Preview"/>');
 $("#frm").append('<input class="btn" type="submit" name="GoTest1" value="Next"/>');

 $('#frm').on('click', '.btn', function () {
     console.log($(this).attr('name'))
 });

jsFiddle の例

$(this).attr('name')get は要求したとおりの名前ですが、値が必要な場合は$(this).val()代わりに使用してください。

于 2013-08-16T15:10:51.927 に答える
1
$("#frm").on("click",  function (event) {
if (event.target.attr("value") === "Next")
 {
  alert("It's button Next");
 }else
 {
  alert("It's button Preview");
 }
});
于 2013-08-16T15:11:07.997 に答える
0

ボタンがクリックされたときにボタンの名前を保存し、どのボタンがクリックされたかを検出できます。

于 2013-08-16T15:12:04.743 に答える