jquery.steps向导中无法绑定事件输入(Can't bind events to i

2019-10-19 00:38发布

我使用从向导http://www.jquery-steps.com/ 。 与向导一切工作相当顺利,但是当我试图绑定一个事件到该向导中输入字段,它不工作。 以下是该问题的基本代码:

<div class="content">
            <h1>Basic Demo</h1>


            <div id="wizard">
                <h2>First Step</h2>
                <section>
                    <input type="text" class="namer" />

                    <div class="text">This should be replaced</div>

                <h2>Second Step</h2>
                <section>
                    <pdfsgdf</p>
                </section>

            </div>
        </div>

<script>
$(".namer").change(function(e){
  $(".text").html($(this).val()); 
});

$(function ()
                {
                    $("#wizard").steps({
                        headerTag: "h2",
                        bodyTag: "section",
                        transitionEffect: "slideLeft"
                    });
                });

</script>

而的jsfiddle是http://jsfiddle.net/m23px/

Answer 1:

它看起来像装了向导时,它改变了事件侦听器。 您将需要监听的事件#wizard代替。

尝试这个:

$("#wizard").on('change','.namer',function(){
    $(".text").html($(this).val());     
});

注意:如果你希望发生的变化为用户键入的,而不是后场失去焦点,你可以使用, keyup事件来代替。

$("#wizard").on('keyup','.namer',function(){
    $(".text").html($(this).val());     
});


Answer 2:

只是为了澄清为什么发生这种情况-在render功能(线892),该向导的内容是使用除去.empty()因此结合于元件的任何听众里面都将丢失。

wizard.attr("role", "application").empty().append(stepsWrapper).append(contentWrapper)
    .addClass(options.cssClass + " " + options.clearFixCssClass + verticalCssClass);

因此,有三个选项来解决这个问题,首先是要做到为特雷弗说和绑定你的听众要么向导元素或DOM它上面的一些元素。

二是在这一点上添加一个回调时,插件已完成加载并初始化你的听众是正常的。

第三是改变render功能使用原来的HTML(并因此原始听众),如下所示:

function render(wizard, options, state) {
    // Create a content wrapper and copy HTML from the intial wizard structure
    var contentWrapperTemplate = "<{0} class=\"{1}\"></{0}>",
        stepsWrapperTemplate = "<{0} class=\"{1}\">{2}</{0}>",
        orientation = getValidEnumValue(stepsOrientation, options.stepsOrientation),
        verticalCssClass = (orientation === stepsOrientation.vertical) ? " vertical" : "",
        contentWrapper = $(contentWrapperTemplate.format(options.contentContainerTag, "content " + options.clearFixCssClass)),
        stepsWrapper = $(stepsWrapperTemplate.format(options.stepsContainerTag, "steps " + options.clearFixCssClass, "<ul role=\"tablist\"></ul>"));

    // Transform the wizard wrapper by wrapping the innerHTML in the content wrapper, then prepending the stepsWrapper
    wizard.attr("role", "application").wrapInner(contentWrapper).prepend(stepsWrapper)
        .addClass(options.cssClass + " " + options.clearFixCssClass + verticalCssClass);

    //Now that wizard is tansformed, select the the title and contents elements
    var populatedContent = wizard.find('.content'),
        stepTitles = populatedContent.children(options.headerTag),
        stepContents = populatedContent.children(options.bodyTag);

    // Add WIA-ARIA support
    stepContents.each(function (index) {
        renderBody(wizard, state, $(this), index);
    });

    stepTitles.each(function (index) {
        renderTitle(wizard, options, state, $(this), index);
    });

    refreshStepNavigation(wizard, options, state);
    renderPagination(wizard, options, state);
}


Answer 3:

本次活动将不火,直到重点是关闭输入的。

使用keyup事件来代替。

请参阅: http://jsfiddle.net/MV2dn/5/



Answer 4:

您的其他代码之前解决这个问题呼叫步骤的代码,当页面准备好让你的绑定不会丢失步骤做其工作时



文章来源: Can't bind events to inputs within jquery.steps wizard