javascript - 使用 jquery 克隆 primefaces 组件

标签 javascript jquery primefaces preventdefault

我有一个要克隆的 div 组件,其中包含 primefaces 组件,如下所示:

<div id="languageBox1">
    <p>
        <h:form>
            <label>Language</label>
            <p:selectOneMenu value="#{candidateController.language}">
                <f:selectItem itemLabel="Select Language" itemValue="language"></f:selectItem>
                <f:selectItems value="#{candidateController.languages}"
                               var="l" itemLabel="#{l}" itemValue="#{l}"></f:selectItems>
                <p:ajax event="change"
                        update=":formShowResult:candidateList :resultNumberForm"
                        listener="#{candidateController.valueChangeListener}"></p:ajax>
            </p:selectOneMenu>
            <p:selectOneMenu value="#{candidateController.languageLevel}">
                <f:selectItem itemLabel="Select Level" itemValue=""></f:selectItem>
                <f:selectItems value="#{candidateController.level}" var="lv"
                               itemLabel="#{lv}" itemValue="#{lv}"></f:selectItems>
                <p:ajax event="change" update=":formShowResult:candidateList"
                        listener="#{candidateController.valueChangeListener}"></p:ajax>
            </p:selectOneMenu>
            <button id="addLanguage" class="active_grey full">Add</button>
        </h:form>
    </p>
</div>

我创建了一个脚本来克隆这个 div,如下所示:

$("#addLanguage").on("click",function(e){
    e.preventDefault();
    $("#languageBox1").clone().appendTo("#languageBox2");
});

现在我的问题是,克隆的选择不起作用,我只是无法选择任何选项,并且它不会再打开,我认为 Preventdefault 指令被卡住,但我用它来阻止按钮提交表单。

最佳答案

好的,让我们修复您的代码。我是这样修改的。

<div class="language-container">
    <div class="language-box">
        <p>
            <h:form>
                <label>Language</label>
                <p:selectOneMenu value="#{candidateController.language}">
                    <f:selectItem itemLabel="Select Language" itemValue="language"></f:selectItem>
                    <f:selectItems value="#{candidateController.languages}"
                        var="l" itemLabel="#{l}" itemValue="#{l}"></f:selectItems>
                    <p:ajax event="change"
                        update=":formShowResult:candidateList :resultNumberForm"
                        listener="#{candidateController.valueChangeListener}"></p:ajax>
                </p:selectOneMenu>
                <p:selectOneMenu value="#{candidateController.languageLevel}">
                    <f:selectItem itemLabel="Select Level" itemValue=""></f:selectItem>
                    <f:selectItems value="#{candidateController.level}" var="lv"
                        itemLabel="#{lv}" itemValue="#{lv}"></f:selectItems>
                    <p:ajax event="change" update=":formShowResult:candidateList"
                        listener="#{candidateController.valueChangeListener}"></p:ajax>
                </p:selectOneMenu>
                <button class="addLanguage active_grey full">Add</button>
            </h:form>
        </p>
    </div>
</div>

我所做的是添加一个语言容器作为您的语言框的父级。假设您的语言框将是您的 child ,它会一遍又一遍地重复。

为了方便起见,我删除了 id,并将其更改为类。因为我们应该知道 id 应该是唯一的基本规则。这就是我们使用类的原因。

现在我们将在每次单击 .addLanguage 时调用单击事件处理程序。

$(document).on("click", ".addLanguage", function() {
    $(".language-box:first-child").clone().appendTo(".language-container");    
});

它的作用是,每次点击 .addLanguage 时。语言框类(子框)将被克隆(第一个子/元素)并附加到父类 .language-container

为了让您欣赏它,这里有一个 jsfiddle。

https://jsfiddle.net/2tuqu2oL/

关于javascript - 使用 jquery 克隆 primefaces 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33297534/

相关文章:

java - 如何聚焦 p :selectBooleanButton component using tab key?

java - 如何在 Primefaces 2.2.1 中为 JSF2 自定义终端组件?

javascript - 更新所有行,然后发送响应sequelize

javascript - 使文本在 jQuery Sortable parent 的 textarea 中可选择

javascript - JQuery hide() 和 show() 不适用于 IE 7 和 8

javascript - 返回未定义的 ajax 函数

jquery - 动画 Div 背景 - CSS 或 jQuery

javascript - 为什么我不能在我的亚马逊服务器上使用新的 XMLHttpRequest?

javascript - 刷新 jqGrid 不会保存启用无限滚动的当前页面位置

java - 我们可以通过编程方式配置 Chrome 吗?