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 ok),
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

I think if you use the first element from the closest call you will be successful:

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

I think you should be passing myform not form

于 2012-09-15T16:45:21.910 回答
0

this在 jQuery 回调中将是附加处理程序的元素。它是原生 DOM 元素,没有任何 jQuery 包装器。

所以假设这#option_field_bizpostcode是一个表单元素,你应该能够this.form像在onclick方法中那样做。

my_function(this.form);
于 2012-09-15T16:49:12.283 回答