Bootstrap Nav选项卡单击“标签标签”上的“事件工作”除外

时间:2017-07-08 01:47:51

标签: javascript jquery html twitter-bootstrap events

你好我已经在这里捅了大约半小时 - 这或许似乎微不足道但是我想在这个上为客户提供良好的服务。

我们已经设置了一个表格,其中包含一系列标签内的部分。现在我只想尝试“保存并继续”#39;按钮更改为'提交'当最后一个标签处于活动状态时 - 用户点击“保存并继续”按钮。按钮或单击顶部的选项卡 - 稍后我们将添加提交验证,等等。但我认为按钮文本更改工作将使我熟悉(由其他人提出)构建的内容以获得更复杂的东西以后工作。

什么工作

  • 当用户通过单击按钮到达最终选项卡时,该按钮可以完美地更改名称。
  • 当用户点击最后一个标签时,该按钮会完全改变名称...当他们点击里面的选项卡时,除外。仍然会生成click事件,但是e.target.id的控制台调用会抛出一个空字符串。

导航标签的代码:



             <!-- Nav tabs -->
              <ul class="nav nav-tabs" role="tablist">
                <li id="personalInfoTab" role="presentation" class="active"><a id="personalInfoLink" href="#personal-info" aria-controls="personal-info" role="tab" data-toggle="tab" class="hidden-xs"><strong>Personal Information</strong></a><a href="#personal-info" aria-controls="personal-info" role="tab" data-toggle="tab" class="visible-xs">Personal Info</a></li>
                <li id="professionalInfoTab" role="presentation"><a id="professionalInfoLink" href="#professional-info" aria-controls="professional-info" role="tab" data-toggle="tab" class="hidden-xs"><strong>Professional Information</strong></a><a href="#contact-info" aria-controls="contact-info" role="tab" data-toggle="tab" class="visible-xs">Prof. Info</a></li>
                <li id="expectationsTab" role="presentation"><a id="expectationsLink" href="#expectations" aria-controls="expectations" role="tab" data-toggle="tab" class="hidden-xs"><strong>Employment Expectations</strong></a><a id="expectationsLink" href="#expectations" aria-controls="expectations" role="tab" data-toggle="tab" class="visible-xs">Expectations</a></li>
                
                <li id="settingsTab" role="presentation"><a id="settingsLink" href="#settings" aria-controls="settings" role="tab" data-toggle="tab" class="hidden-xs"><strong>Profile Settings</strong></a><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab" class="visible-xs">Settings</a></li>
              </ul>
&#13;
&#13;
&#13;

按钮代码:

&#13;
&#13;
<input type="submit" name="profile-continue" class="btn btn-danger" id="continueBtn" value="Save & Continue">
&#13;
&#13;
&#13;

和Jquery:

&#13;
&#13;
	// Check which tab is active and set the Continue Button text	
	function initButtons() {
	
		console.log($('#settingsTab'));
		
	if ($('#settingsTab').hasClass('active')) {
		$('#continueBtn').prop( 'value' , 'Submit');
	}
	else {
		$('#continueBtn').prop( 'value' , 'Save and Continue');
	}
	};
	
	initButtons();

	/* The 'Continue' button behavior */
	$('#continueBtn').click(function(){
		// Activate the next tab
		$('.nav-tabs > .active').next('li').find('a').trigger('click');
		// Change the submit Button text accordingly
		initButtons();
		// Possible to-do: wrap in an 'if' statement that checks if there's any missing 'required' fields.
		// Possible to-do: determine 'if' the tab selected is the last in the sequence.
		// Possible to-do: grey/non-grey tabs (make accessible in sequnce).
		}
		);
	
	$( 'a[data-toggle="tab"]' ).click(function(e){
		console.log(e);
		console.log('Target: ' , e.target.id);
		// Check what tab was picked and submit Button text accordingly
		
			if ( e.target.id === 'settingsLink' ) {
				$('#continueBtn').prop( 'value' , 'Submit');
			}
			else {
				$('#continueBtn').prop( 'value' , 'Save and Continue');
			}
		
		}
		);
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

好的,所以当我输入问题的时候,我想出了这一点,但我发现我仍然会在这里发帖,以帮助其他可能需要它的人。标签文本位于“强”HTML元素的内部,该元素是我尝试定位的标签的

所以我通过改变这条线来实现它:

if (e.target.id === 'settingsLink' ) {...

为:

if (e.target.id === 'settingsLink' || e.target.parentElement.id === 'settingsLink' ) {...

希望能节省一些时间。