2013-08-28 45 views
0

使用Calling Jquery within/inside a Shadowbox(感謝Rob Grzyb和kannan!)的回答,我可以從我的Drupal站點上的Shadowbox中觸發jQuery,但是,我是無法獲得它的一部分功能:jQuery .val()在Shadowbox中不起作用

我在我的Shadowbox中有一個表單,並且我使用.val()來確定select字段的值(並且爲了測試目的,在警示框)。當我點擊'提交'按鈕並且警報觸發時,即使我選擇了不同的值(如綠色),警報也會讀取第一個值(紅色)。在常規頁面上,它按預期工作,並且警報讀取正確的值。

示例代碼:

<div class="color-form" style="display: none;"> 
    <h3>What's Your Favorite Color?</h3> 
    <form class="color"> 
    <select name="colorurl" class="colorurl"> 
     <option value="red">Red</option> 
     <option value="green">Green</option> 
     <option value="blue">Blue</option> 
    </select> 
    <br /> 
    <input class="button" type="submit" value="Submit"> 
    </form> 
    <script type="text/javascript"> 
    jQuery(document).ready(function($){ 
     $('body').on('click', '.color .button', function(e) { 
     e.preventDefault(); 

     var colorurl = $('.colorurl').val(); 
     alert(colorurl); 
     }); 
    }); 
    </script> 
</div> 
<script type="text/javascript"> 
    jQuery(document).ready(function($){ 
    $('a.form').click(function() { 
     var thisContent = $('.color-form').html(); 
     Shadowbox.open({ 
     content: thisContent, 
     player: 'html', 
     displayNav: false, 
     height: 350, 
     width: 350 
     }); 
    }); 
    }); 
</script> 
<a class="form">Link to Form</a> 

我怎麼能修改此代碼,以便它工作在太極拳?謝謝!

回答

0

當您創建shadowbox時,您正在複製內容,因此您有兩份下拉列表。 val()返回第一個元素的值,在這種情況下,它不是shadowbox中的元素。

試試這個:

在你的代碼,設置了太極拳:

var thisContent = $('<div class="shadowbox-color-form"></div>').append($('.color-form').html())[0].outerHTML; 

在處理該點擊代碼:

$('body').on('click', '.shadowbox-color-form .button', function(e) { 
    e.preventDefault(); 

    var colorurl = $('.shadowbox-color-form .colorurl').val(); 
    alert(colorurl); 
}); 
+0

感謝傑森!這聽起來像是發生了什麼。但是,添加'.wrap('

')'實際上會停止Shadowbox的工作,並且我得到一個「沒有方法'換行'」的javascript錯誤。我正在檢查出http://stackoverflow.com/questions/11534717/error-object-has-no-method-wrap,但不知道如何才能與我的代碼一起工作。將發佈,如果我得到它的工作。 – areikiera

+0

@areikiera我編輯了我的答案。 'html()'返回一個沒有'wrap()'方法的字符串。 –

+0

它看起來像div.color-form的內容加載在Shadowbox HTML中,但不是div.color-form本身,所以我認爲這會讓你的解決方案無法工作。 – areikiera