route validation and prevent navigation from breaking on re-cklick
This commit is contained in:
@@ -43,8 +43,13 @@ span.expanded {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav>.disabled>a, .navbar-default .navbar-nav>.disabled>a:focus, .navbar-default .navbar-nav>.disabled>a:hover {
|
||||
background-color:#FFFFFF;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:focus{
|
||||
background-color: #FFFFFF;
|
||||
border:3px solid #616d77;
|
||||
color:#b2382a;
|
||||
}
|
||||
|
||||
@@ -54,12 +59,13 @@ span.expanded {
|
||||
text-align: center;
|
||||
color:#000000;
|
||||
border-radius: 15px;
|
||||
border: 0px solid;
|
||||
border:3px solid transparent;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav>li>a:hover{
|
||||
background-color: #666b75;
|
||||
text-emphasis: bold;
|
||||
background-color: #666b75;
|
||||
text-emphasis: bold;
|
||||
border:3px solid transparent;
|
||||
}
|
||||
|
||||
.navbar-inner{
|
||||
|
||||
15
js/main.js
15
js/main.js
@@ -8,8 +8,18 @@ var ibuyproperties=(function(){
|
||||
function navShow(cls,ele){
|
||||
$("."+cls).addClass('hide');
|
||||
$("#pnl_"+ele).removeClass('hide');
|
||||
$(".topNav"+cls).removeClass('active');
|
||||
$(".topNav"+ele).addClass('active');
|
||||
$(".topNav"+cls).removeClass('active disabled');
|
||||
$(".topNav"+cls).removeAttr('href');
|
||||
|
||||
$.each($(".topNav"+cls+">a"),function(pos,ele){
|
||||
$(ele).attr("href", $(ele).attr("mytargeturl"));
|
||||
});
|
||||
|
||||
|
||||
$($(".topNav"+ele)[0]).addClass('active disabled');
|
||||
$($(".topNav"+ele)[0]).addClass('active disabled');
|
||||
$($(".topNav"+ele+">a")[0]).removeAttr('href');
|
||||
|
||||
}
|
||||
|
||||
function toggleButton(elEnable,elDisable){
|
||||
@@ -38,6 +48,7 @@ $(document).ready(function(){
|
||||
if (ibuyproperties.isDebugMode) {
|
||||
$("body").append(ibuyproperties.templateHelper.get("debug")({}));
|
||||
}
|
||||
|
||||
ibuyproperties.router.route();
|
||||
$(window).on('hashchange', ibuyproperties.router.route);
|
||||
});
|
||||
|
||||
16
js/router.js
16
js/router.js
@@ -14,12 +14,18 @@ ibuyproperties.router=(function(){
|
||||
if (lastLocation != hash) {
|
||||
this.lastLocation=hash;
|
||||
|
||||
var routeFoundMainNav=false;
|
||||
var promisesMainNav=[];
|
||||
// Generic routing based on template names
|
||||
$.each(ibuyproperties.templates.getType("mainPages"),function(pos,name){
|
||||
var def = new $.Deferred();
|
||||
promisesMainNav.push(def);
|
||||
|
||||
var re=new RegExp("^#" + name + "[/]*");
|
||||
if (ibuyproperties.isDebugMode) { console.log("Generic Router - test ",name);}
|
||||
// debugger;
|
||||
if (hash.match(re)) {
|
||||
routeFoundMainNav=true;
|
||||
if (ibuyproperties.isDebugMode) { console.log("Generic Router - match ",name);}
|
||||
if ($("#pnl_" +name).length === 0) {
|
||||
$("#content").empty().append(ibuyproperties.templateHelper.get(name)({templateName:name}));
|
||||
@@ -27,19 +33,29 @@ ibuyproperties.router=(function(){
|
||||
ibuyproperties.navShow('mainScreen',name);
|
||||
$('.in,.open').removeClass('in open');
|
||||
}
|
||||
def.resolve();
|
||||
});
|
||||
$.when.apply(undefined,promisesMainNav).then(function(){if (!routeFoundMainNav) {console.error("NO matching Navigation tab route found");}});
|
||||
|
||||
var promisesDyn=[];
|
||||
var routeFoundDynamic=false;
|
||||
// Dynamic route handling
|
||||
$.each(allRoutes,function(pos,theRoute){
|
||||
var def = new $.Deferred();
|
||||
promisesDyn.push(def);
|
||||
if (ibuyproperties.isDebugMode) { console.log("Dynamic Router - test ",hash ,theRoute);}
|
||||
|
||||
var re=new RegExp(theRoute.re);
|
||||
if (hash.match(re)) {
|
||||
routeFoundDynamic=true;
|
||||
if (ibuyproperties.isDebugMode) { console.log("Dynamic Router - match ",hash,theRoute);}
|
||||
theRoute.cb.call();
|
||||
return false; // exit the loop
|
||||
}
|
||||
def.resolve();
|
||||
});
|
||||
$.when.apply(undefined,promisesDyn).then(function(){if (!routeFoundDynamic) {console.error("NO matching Dynamic route found");}});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
<!-- Collect the nav links, forms, and other content for toggling -->
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="topNavmainScreen topNavHome active"><a class="navBarTab" href="#Home" >Home</a></li>
|
||||
<li class="topNavmainScreen topNavSell"><a class="navBarTab" href="#Sell">Sell</a></li>
|
||||
<li class="topNavmainScreen topNavHome active"><a class="navBarTab" mytargeturl="#Home" >Home</a></li>
|
||||
<li class="topNavmainScreen topNavSell"><a class="navBarTab" mytargeturl="#Sell">Sell</a></li>
|
||||
</ul>
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<h1>ERROR occured whilst sending form data. Please try again!</h1>
|
||||
<h1>ERROR occured whilst sending form data.</h1>
|
||||
|
||||
Please check your internet connection and try to <a type="submit" class="btn btn-success" onclick="ibuyproperties.sellForm.sendForm();">resubmit</a><br>
|
||||
<b>... or alternatively send the data via <button class="btn btn-success" onclick="generateMail();" id="mailLink">e-mail</button>.</b>
|
||||
|
||||
<script>
|
||||
|
||||
@@ -1 +1,8 @@
|
||||
<h1>Thanks!</h1>
|
||||
<hr/>
|
||||
Your data was submitted and we will contact you after reviewing.<br/>
|
||||
<br/>
|
||||
Kind regards<br/>
|
||||
<br/>
|
||||
~Joe
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ function nextHandler(){
|
||||
if(checkEMail($($('[name="email"]')[0]).val())){
|
||||
window.location="#Sell/page2/";
|
||||
} else {
|
||||
console.log("EMail Wrong");
|
||||
if (ibuyproperties.isDebugMode) { console.log("EMail Wrong"); }
|
||||
$("#alertInvalidEMail").removeClass("hide");
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ function nextHandler(){
|
||||
<div id="alertInvalidEMail" class="alert alert-danger hide" role="alert">
|
||||
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
|
||||
<span class="sr-only">Error:</span>
|
||||
Enter a valid email address
|
||||
A valid email address is required.
|
||||
</div>
|
||||
<div class="input-group" style="width:100%">
|
||||
<span class="input-group-addon fixWidth1 fieldLabel" >First Name</span>
|
||||
|
||||
Reference in New Issue
Block a user