передача параметров: передача строкового значения в функции - PullRequest
0 голосов
/ 19 ноября 2010

Я хочу передать строковое значение, которое я получаю из текстовой области, в focus () и blur (), но почему я получаю [object object]?

Я получаю строковое значениекаждая текстовая область успешно с каждым (), и я сохраняю строку в переменной - var value_default = $this.val();

Затем я передаю это var в $this.focus(function (value_default) {..}) - я передаю его неправильно?

ЕслиЯ предупреждаю это value_default Я получу [объект oject] - оповещение (value_default);

Ниже приведен весь код, если вам нужно его увидеть ...

$(".autohide").each(function(){

    /* set the variable and store its value */
    var $this = $(this);

    var value_default = $this.val();

    var parent_autohide = $this.parents('form');

    var parent_button = $('input[type=submit]',parent_autohide).parents("div:.item-form").hide();


    var parent_marginbottom = parseInt($this.parents("div:.item-form").css("marginBottom"));

    $this.parents("div:.item-form").css({margin:'0px'});

    alert(value_default); // I will get the string value of each textarea element

    $this.focus(function (value_default) {

        alert(value_default); // I will get [object object]

        var $this = $(this);

        $this.elastic();

        $this.parents('div:.item-form').css({margin:'0px 0px '+parent_marginbottom+'px 0px'});

        var $this_parent = $this.parents('form');

        var $this_button =  $('input[type=submit]',$this_parent).parents("div:.item-form").show();


    }).blur(function(value_default){

        alert(value_default); // I will get [object object]

        var $this = $(this);

        var value_current = $this.val();

        if ( value_current == value_default) 
        {
            $this.css({ height: 'inherit'});

            $this.parents('div:.item-form').css({margin:'0px'});

            var $this_parent = $this.parents('form');

            var $this_button =  $('input[type=submit]',$this_parent).parents("div:.item-form").hide();

        }
    });

});

большое спасибо.

edit:

Я знаю, что вызывало ошибку в IE -

$this.css({height: 'inherit'}); // this line will create error on IE

$this.css({height:''}); // IE likes this

, так что не так с «наследовать», что IE не воспримет это какдругие браузеры! ??

1 Ответ

1 голос
/ 19 ноября 2010

Как сказал комментатор, созданная вами функция, которая обрабатывает фокус и размытие, имеет первый параметр (параметр события), определенный как value_default, который переопределяет тот, который вы объявили выше.

Так что это должно работать, если вы просто выполните:

.focus(function(){ и .blur(function(){

Таким образом, вы сможете получить доступ к объявленному ранее значению value_default, так как оно все ещев пределах видимости и не переопределяются параметрами вашей функции.

...