javascript - 动态选择菜单在更改事件后不起作用

标签 javascript meteor

我正在尝试制作一个动态选择菜单,您可以在其中选择客户,然后过滤该客户的联系人。

当我选择客户时,它会正确过滤联系人,但客户选择菜单不会显示已选择任何内容。

<template name="newLeadForm">

<form id="lead">
    <fieldset>
        <legend>New Lead</legend>
        <br/>
        <select id="customer_id" class="span12">
            <option id="null" value="null">Select One</option>
            {{#each customers}}<option id="{{id}}" value="{{_id}}">{{name}} - {{city}}, {{state}} {{zip}}</option>{{/each}}
        </select>
        <select id="contact_id" class="span12">
            <option id="null" value="null">Select One</option>
            {{#each contacts}}<option id="{{id}}" value="{{_id}}">{{first_name}} {{last_name}}</option>{{/each}}
        </select>

        <input id="submit" type="submit" class="btn">
    </fieldset>
</form>

</template>

这是提供给模板的数据

Template.newLeadForm.customers = function () {
return Customers.find();
};

Template.newLeadForm.contacts = function () {
console.log(Session.get("_customer_id"));
return Contacts.find({customer_id: Session.get("_customer_id")});
};

和事件处理程序

Template.insert.events({
'change form#lead #customer_id' : function (event) {
    customer = $("form#lead #customer_id").val();
    Session.set("_customer_id", $("form#lead #customer_id").val());

},

'submit form#lead' : function (event) {

    if (event.type === 'click' || event.type === 'submit') {

        event.preventDefault();

        var customer_id = $("#customer_id").val();
        var contact_id = $("#contact_id").val();
        var lead_source_id = $("#lead_source_id").val();
        var lead_number = $("#lead_number").val();

        if(Leads.insert({id: Leads.find().count() + 1, customer_id: customer_id, contact_id: contact_id})) {
            $("#customer_id").val(null);
            $("#contact_id").val(null);
            Session.set("_customer_id", null);
        }   
    }
}   
});

最佳答案

Meteor 重新渲染 select 元素中的选项元素后,您应该告诉它在 select 元素上设置 selectedIndex 属性,以便它更新。您可以使用 rendered 事件来执行此操作:

Template.newLeadForm.rendered = function() {
  $("#customer_id")[0].selectedIndex = 5; // possibly track the index so you know what to set it to
}

关于javascript - 动态选择菜单在更改事件后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964372/

相关文章:

javascript - 子模型更改事件不会传播到主干中的父模型

javascript - TipTap 和 Nuxt - 无法从非 EcmaScript 模块导入命名导出 '{module}'

javascript - 单击事件更改复杂的 SVG (Meteor)

meteor - 我如何知道一个方法是在服务器端还是客户端(从服务器)调用的?

javascript - Meteor 和 ReactJS 的简单分页

meteor - Meteor.js 中的区域产量

javascript - 日期时间选择器 - Chrome 和 Firefox 之间的奇怪行为

javascript - 为什么我变得未定义?

javascript - 使用 jQuery 拖动后从模板中获取信息

node.js - 检查 mongodb 上的日期范围内的日期是否冲突