【发布时间】:2015-05-06 16:37:11
【问题描述】:
我有一个包含多个选项卡和选项卡内的输入字段的页面。当用户单击继续按钮并且输入字段为空白时,我想阻止他们移动到下一个选项卡。我试过 preventDefault();并返回假;似乎都不适合我。
这是我的代码,感谢您对我做错的任何帮助!
$('.btn-next').click(function (event) {
var businessNameInput = $.trim($('#businessName').val());
if (businessNameInput === '') {
event.preventDefault();
console.log('Oops, looks like something is missing!');
} else {
console.log("Yay, we're good to go!");
}
});
控制台日志适用于每个选项(输入空白或不输入),但仍会移动到下一个选项卡。
我正在使用 Fuel UX Wizard 作为选项卡以及下一个和上一个按钮。我看了一下他们的代码,把它拉出来,我认为这是他们的下一个按钮功能......
var Wizard = function( element, options ) {
var kids;
this.$element = $( element );
this.options = $.extend( {}, $.fn.wizard.defaults, options );
this.options.disablePreviousStep = ( this.$element.attr( 'data-restrict' ) === "previous" ) ? true : this.options.disablePreviousStep;
this.currentStep = this.options.selectedItem.step;
this.numSteps = this.$element.find( '.steps li' ).length;
this.$prevBtn = this.$element.find( 'button.btn-prev' );
this.$nextBtn = this.$element.find( 'button.btn-next' );
kids = this.$nextBtn.children().detach();
this.nextText = $.trim( this.$nextBtn.text() );
this.$nextBtn.append( kids );
// handle events
this.$prevBtn.on( 'click.fu.wizard', $.proxy( this.previous, this ) );
this.$nextBtn.on( 'click.fu.wizard', $.proxy( this.next, this ) );
this.$element.on( 'click.fu.wizard', 'li.complete', $.proxy( this.stepclicked, this ) );
this.selectedItem( this.options.selectedItem );
if ( this.options.disablePreviousStep ) {
this.$prevBtn.attr( 'disabled', true );
this.$element.find( '.steps' ).addClass( 'previous-disabled' );
}
};
这里是 FuelUX 向导中完整 JS 文件的链接:www.fuelcdn.com/fuelux/3.0.2/js/fuelux.js
【问题讨论】:
-
只要字段为空,您是否尝试过禁用下一步按钮?与其让他们点击并阻止他们,不如让他们一开始就点击。
-
确保你的目标是正确的 id $('#businessName') 并且你应该在点击后立即放置 event.preventDefault() ,而不是在 if 语句中
-
我尝试禁用下一个按钮,但在出现空字段时会感觉到提示将帮助人们找出问题,而不是不让他们继续(个人喜好)
-
是的,id 是正确的,因为控制台日志为空或未运行。我尝试移动到代码顶部,但它仍然无法正常工作。
-
请显示选择下一个选项卡的代码。看起来该选项卡正在被另一个事件目标元素选中。
标签: jquery