我使用从向导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/
它看起来像装了向导时,它改变了事件侦听器。 您将需要监听的事件#wizard
代替。
尝试这个:
$("#wizard").on('change','.namer',function(){
$(".text").html($(this).val());
});
注意:如果你希望发生的变化为用户键入的,而不是后场失去焦点,你可以使用, keyup
事件来代替。
$("#wizard").on('keyup','.namer',function(){
$(".text").html($(this).val());
});
只是为了澄清为什么发生这种情况-在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);
}
本次活动将不火,直到重点是关闭输入的。
使用keyup
事件来代替。
请参阅: http://jsfiddle.net/MV2dn/5/
您的其他代码之前解决这个问题呼叫步骤的代码,当页面准备好让你的绑定不会丢失步骤做其工作时