Как мога да получа стойността от текстово поле във Fancybox iframe при затваряне

Имам тест във fancybox(2) iframe, когато завърша, имам резултат, съхраняван в скрито текстово поле на страницата във Fancybox:

<form>
      <input type="text" id="theresult" hidden="true"/>
</form> 

Сега, когато потребителят затвори Fancybox, трябва да уловя тази стойност, за да я използва родителската страница, опитах:

$('.fancybox1').fancybox({
        width: 800,
        height: 500,    
        beforeClose: function () {
                 var testResult = $("#fancybox-frame").contents().find('input#theresult');
                 $('#txtTestValue').attr('value', testResult );
        }
});

Но това връща "[object Object]"...

Какво греша?!


person Digital Lightcraft    schedule 27.10.2014    source източник


Отговори (2)


Тъй като използвате fancybox v2.x, може да се наложи да насочите правилния селектор, така че опитайте това

beforeClose : function () {
    var testResult = $(".fancybox-iframe").contents().find("#theresult").val();
    $('#txtTestValue').attr('value', testResult);
}

Забележете промените:

$("#fancybox-frame")

... би трябвало

$(".fancybox-iframe")

... и също добавих метода .val().

person JFK    schedule 27.10.2014
comment
Ако искате да научите малко повече как да предавате променливи напред и назад между родителски и iframed страници, може да искате да проверите този stackoverflow .com/q/26426934/1055987 - person JFK; 27.10.2014
comment
Ударихте го право по главата JFK :-) Работи добре. Благодаря ти! - person Digital Lightcraft; 27.10.2014

Вие съхранявате самото поле за въвеждане. Трябва да съхранявате стойността на входа:

var testResult = $("#fancybox-frame").contents().find('input#theresult').val();
person ltalhouarne    schedule 27.10.2014
comment
благодаря - току-що опитах, но сега просто връща 0 - person Digital Lightcraft; 27.10.2014
comment
Опитайте с .text() вместо .val() - person ltalhouarne; 27.10.2014
comment
Трябва да публикувате цигулка на текущата си настройка, за да можем да ви помогнем по-добре. - person ltalhouarne; 27.10.2014