フォームアクションを変更するjquery


117

フォームに2つのボタンがあり、クリックしたときに2つの異なるページを呼び出す必要があります。button1をクリックするとpage1が読み込まれ、button2をクリックするとpage2が読み込まれます。私はこれをjavascriptで行う方法を知っていますが、jqueryでこれを行う方法についての手がかりはありません。

回答:


181

これを試して:

$('#button1').click(function(){
   $('#formId').attr('action', 'page1');
});


$('#button2').click(function(){
   $('#formId').attr('action', 'page2');
});

28

jQueryは単なるJavaScriptです。それについてはそれほど違わないでください。「通常の」JSと同じように、ボタンにイベントリスナーを追加して、フォームのアクション属性を変更します。jQueryでは、これは次のようになります。

$('#button1').click(function(){
   $('#your_form').attr('action', 'http://uri-for-button1.com');
});

このコードは2番目のボタンでも同じです。ボタンのIDとフォームの送信先のURIを変更するだけです。



14

バラエティのために:

var actions = {input1: "action1.php", input2: "action2.php"};
$("#input1, #input2").click(function() {
    $(this).closest("form").attr("action", actions[this.id]);
});

14

この回答をご覧くださいhttps : //stackoverflow.com/a/3863869/2096619

タムリンの引用:

「action」という名前のフォーム要素があると、jQuery(1.4.2)が混乱します。これを回避するには、DOM属性メソッドを使用するか、「action」という名前のフォーム要素を使用しないようにします。

<form action="foo">
  <button name="action" value="bar">Go</button>
</form>

<script type="text/javascript">
  $('form').attr('action', 'baz'); //this fails silently
  $('form').get(0).setAttribute('action', 'baz'); //this works
</script>


0

フォームのアクション値を動的に変更するには、以下のコードを試してください:

以下のコードは、いくつかのdailogボックスを開いていて、そのdailogボックス内にフォームがあり、そのアクションを変更したい場合です。Bootstrap dailogボックスを使用し、そのdailogボックスを開くときに、フォームにアクション値を割り当てています。

$('#your-dailog-id').on('show.bs.modal', function (event) {
    var link = $(event.relatedTarget);// Link that triggered the modal
    var cURL= link.data('url');// Extract info from data-* attributes
    $("#delUserform").attr("action", cURL);
});

通常のページでフォームのアクションを変更しようとしている場合は、以下のコードを使用してください

$("#yourElementId").change(function() { 
  var action = <generate_action>;
  $("#formId").attr("action", action);
});
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.