3

jqueryを使用して送信中にフォームアクションを別のリンクに変更しようとしています。次のコードを表示してください。

JavaScript

$(document).ready(function(){
    $("form[name='search']").submit(function(e){
        var submit=$(this);
        submit.attr('action','?search='+submit.find("input[name='tsearch']").val());
    });
});

HTML/PHP

    <form name="search" method="post">
          <input class="inputbox" type="text" name="tsearch" value="<?php echo $text_search; ?>" />

私はそれを機能させることができないようですが。ここで何か助けていただければ幸いです。

4

2 に答える 2

2

これが実際の例です:http://jsfiddle.net/RmKDT/4/

アクションが変更されていることをアラートで確認できます。フォームを再送信する必要があります。

編集:潜在的な無限ループを修正

$(function(){

  var submitted = false;
  $('form').submit(function(e){

    if (submitted == true) {

      return;

    }
    e.preventDefault();
    var action = $(this).attr('action');

    alert(action);

    $(this).attr('action', 'two.php');
    action = $(this).attr('action');

    alert(action);

    submitted = true;
    // resubmit the form
    $(this).submit();

  });

});
于 2013-01-08T01:52:54.770 に答える
1

あなたのコードは問題ないようです。これを機能させるために試すことができることがいくつかあります。

  1. スクリプトがページに取り込まれていることを確認してください。確認する1つの方法は、Chromeデバッガーの[ソース]タブを使用し、HTMLヘッドセクションで他のファイルを検索することです。

  2. jQueryをインクルードした後、データテールスクリプトをインクルードしていることを確認してください。これは、jQueryに依存していることが最も確実です。

  3. jQueryが適切に1回だけ含まれているかどうかを確認します。

  4. jQueryの競合に注意してください。$をオーバーライドしている他のライブラリがいくつかあるため、$はjQueryのエイリアスではなくなったため、コードは機能していません。jQuery.noConflict()同じ変数$を使用するページ上の他のライブラリとの競合を回避するために使用できます。

  5. alert('?search='+submit.find("input[name='tsearch']").val())必要な値が得られているかどうかを確認してください。

于 2013-01-08T01:47:03.920 に答える