route validation and prevent navigation from breaking on re-cklick

This commit is contained in:
Joe
2017-02-07 21:55:04 -06:00
parent b557c002ae
commit cb3e4ca7a0
7 changed files with 68 additions and 27 deletions

View File

@@ -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{

View File

@@ -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);
});

View File

@@ -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");}});
}
}

View File

@@ -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">

View File

@@ -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>

View File

@@ -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

View File

@@ -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>