2016-04-02 8 views
1

私はページ上で作業しています。フォームを送信するときに何かしたいです。これは形式です:jquery attrによってonsubmit属性に追加された関数を実行する方法

<form class="tsf" action="/search" style="overflow:visible" id="tsf" method="GET" name="f" onsubmit="return q.value!=''" role="search"> 

私はちょうどreturn q.value!=''

$("#tsf").attr('onsubmit', "do_something(); return q.value!=''"); 

前に新しい機能を追加するには、このコードを書いたと私はそれの後にdo_something定義:

function do_something(){ 
    alert("success"); 
} 

しかし、コンソールにエラーを返します:

Uncaught ReferenceError: do_something is not defined

この方法(do_something)をこの方法で呼び出して実行するにはどうすればよいですか?

注:いくつかの理由から、私はONSUBMITために私の機能を追加することだと私はちょうどこのようにdo_something()を実行するための方法を探しています!

+0

を更新し、新しいハンドラを作成することができますが、このエラーを表示するにはフィドルを共有することができますか? – gurvinder372

+0

クリックイベントハンドラの追加のように他の方法で行うことはできませんか? – guradio

+0

@guradioいいえ、Ajaxリクエストを送信しているため、私が見つけた唯一の方法はonsubmitに関数を追加し、フォームを送信したときに実行したいものです。 – M98

答えて

1

は、たぶん、あなたが最初にそれをオフに設定してから

function do_something(){ 
    alert("success"); 
} 
function attachNewMethod() 
{ 
    $('#tsf').prop('onclick',null).off('click'); 
    $("#tsf").attr('onsubmit', "do_something(); return q.value!=''"); 
} 

fiddle

+0

ありがとうございますが、これはうまくいかない!イベントリスナーはどうですか? – M98

+0

あなたはフィドルをチェックしましたか? – gurvinder372

+0

はい。私のコードではうまくいきませんでした。フォームはGoogleフォームで、入力は検索フィールドです。私はクロムエクステンションを開発中です。サーバーにGoogleの検索語句を送信する必要があります – M98

関連する問題