javascript - Lightbox 杀死 javascript 表单选项

标签 javascript jquery forms lightbox

所以我正在使用的表单遇到了棘手的问题。所以它被放置在灯箱中,效果很好。问题是有一个选项可以根据您之前选择的内容切换后面的选项。

这在 Lightbox 之外有效,但在表单内的 Lightbox 中时失败。

我正在使用这个例子:Demo Fiddle

所以我首先在标题中加载它:

<script src="http://code.jquery.com/jquery-1.7.0.min.js"></script>
<script src="release/featherlight.min.js" type="text/javascript" charset="utf-8"></script>

这是导致问题的表单部分:

<div class="lightbox" id="fl1">


    <form>

    <select name="select1" id="select1">
    <option value="1">Fruit</option>
    <option value="2">Animal</option>
    <option value="3">Bird</option>
    <option value="4">Car</option>
    </select>


    <select name="select2" id="select2">
    <option value="1">Banana</option>
    <option value="1">Apple</option>
    <option value="1">Orange</option>
    <option value="2">Wolf</option>
    <option value="2">Fox</option>
    <option value="2">Bear</option>
    <option value="3">Eagle</option>
    <option value="3">Hawk</option>
    <option value="4">BWM<option>
    </select>

    </form>
</div>

这两个脚本位于页面底部:

<script>

$("#select1").change(function() { 
if($(this).data('options') == undefined){
    /*Taking an array of all options-2 and kind of embedding it on the select1*/
    $(this).data('options',$('#select2 option').clone());
    } 
var id = $(this).val();
var options = $(this).data('options').filter('[value=' + id + ']');
$('#select2').html(options);
});

</script>

最佳答案

我不太熟悉您正在使用的灯箱库。我不太清楚如何隐藏原始 div 并保持覆盖内容显示。这很奇怪,因为它复制了元素,所以发生的情况是您绑定(bind)到原始元素,但创建的新元素没有它。

http://jsfiddle.net/fRuhn/940/更新了 fiddle ,但代码如下:

<select name="select1" class="select1">
<option value="1">Fruit</option>
<option value="2">Animal</option>
<option value="3">Bird</option>
<option value="4">Car</option>
</select>


<select name="select2" class="select2">
<option value="1">Banana</option>
<option value="1">Apple</option>
<option value="1">Orange</option>
<option value="2">Wolf</option>
<option value="2">Fox</option>
<option value="2">Bear</option>
<option value="3">Eagle</option>
<option value="3">Hawk</option>
<option value="4">BWM<option>
</select>

更改为 id 上的类,这样我就可以绑定(bind)到正确的选择。然后我将您的事件绑定(bind)放入一个函数中:

function bindEvents() {
  $(".select1").change(function() { 
    if($(this).data('options') == undefined){
      /*Taking an array of all options-2 and kind of embedding it on the select1*/
      $(this).data('options',$('#select2 option').clone());
    } 
    var id = $(this).val();
    var options = $(this).data('options').filter('[value=' + id + ']');
    $('.select2').html(options);
  });
}

然后在featherlight调用中,添加一个afterOpen:

$('a').featherlight({
    targetAttr: 'href',
    afterOpen: function () {
      bindEvents();
    }
});

关于javascript - Lightbox 杀死 javascript 表单选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24954861/

相关文章:

javascript - 将javascript变量分配给同一页面中的jsp

php - 无法通过ajax调用发布数据

javascript - Y 轴旋转错误

forms - 在 angular-ui select 中设置 ng-selected

javascript - 使用 javascript 迭代子对象并获取所有值

jquery - 如何获得元素的正确偏移量? -jQuery

jquery - html5本地存储分割JSON.stringify数据

jquery - 在 jQuery 中重叠多个 setTimeouts

Javascript 函数 this.title, this.value

PHP Symfony Forms 如何访问嵌套对象中的属性