0

HTMLから非常にうまく実行されるJavaScript関数があります

'onClick="my_function(this.form)"

しかし、フォーム内の特定の要素にデータがキー入力されている場合は、この関数も呼び出したいと思います

  jQuery(document).ready(function($){

   $('#option_field_bizpostcode').keyup(function() {
      var myform = $(this).closest('form').options-i-have-tried();
      my_function(myform);
        });
 });

options-i-have-tried() には html() が含まれています (これは、正しいフォーム内に html があることを示しています)、
get() は暗所で少し突き刺し、
serializeArray() は同様の質問に対するいくつかの回答から、
そして何もありません。

いずれの場合も、私の関数は、その引数フォーム、またはより具体的には form.myelement が未定義であると不平を言います

期待に感謝します

4

4 に答える 4

1

FORM要素をインラインハンドラー(onclick属性)の関数に渡すので、jQueryハンドラーでも同じことを行う必要があります。

jQuery(document).ready(function($){
    $('#option_field_bizpostcode').keyup(function() {
        var myform = $(this).closest('form')[0]; //because the form element is at the first index in the jquery object
        my_function(myform);
    });
});

またはさらに良いことに、これを実行することに固執しませんか?

jQuery(document).ready(function($){
    $('#option_field_bizpostcode').keyup(function() {
        my_function(this.form);
    });
});
于 2012-09-15T16:47:20.227 に答える
0

thisjQueryコールバックでは、ハンドラーがアタッチされる要素になります。これは、jQueryラッパーを含まないネイティブDOM要素です。

したがって、それがフォーム要素であると仮定すると、メソッドの場合と同じ#option_field_bizpostcodeように実行できるはずです。this.formonclick

my_function(this.form);
于 2012-09-15T16:49:12.283 に答える
0

私はあなたが通過するべきではないと思いmyformますform

于 2012-09-15T16:45:21.910 に答える
0

closest呼び出しの最初の要素を使用すると、成功すると思います。

$('#option_field_bizpostcode').keyup(function() {
  var myform = $(this).closest('form')[0];
  my_function(myform);
});
于 2012-09-15T16:44:48.410 に答える