How do I have a tabnavigator page specific cfsavecontent?
How do I write this so that a button on a tabnavigator page
calls javascript function
that will pass the correct identifier for the page?
Any ideas?
<script language='JavaScript'>
<cfoutput>
function GotoPage(ID)
var sLocation;
sLocation = "gotoPage.cfm?ID=" + ID;
parent.location = sLocation;
</cfoutput>
</script>
</head>
<body >
<h1>Information</h1>
<cfoutput>
<cfform name='form_Info' format="flash" method="POST"
width="90%" height="500" skin="haloBlue" action="NextPage.cfm">
<cfformgroup type="hbox" label="Client">
<cfformitem type="html">
<cfinput type="text" id="ClientName" name="ClientName"
value="John Smith, Inc." size="60" label="Name: "/>
</cfformitem>
</cfformgroup>
<cfformgroup type="tabnavigator">
<cfformgroup type="page" label="John Smith">
<cfformitem type="html">
<cfinput type="text" id="EmployeeName"
name="EmployeeName" value="John Smith" size="60" label="Name:
"/>
</cfformitem>
<cfinvoke
component="PhoneNumbers"
method="List"
returnvariable="rsContactInfo"
>
<cfformgroup type="tabnavigator" id="tabContactInfo">
<cfloop query="rsContactInfo">
<cfformgroup type="page" label="#rsContactInfo.type#">
<cfformitem type="html">
<cfinput type="text"
id="ContactInfoPhone_#rsContactInfo.id#"
name="ContactInfoPhone_#rsContactInfo.id#" size="20" maxlength="14"
mask="(999) 999-9999" validate="telephone"
validateAt="onBlur,onSubmit" message="Error in Phone
entry.\nFormat: (999)999-9999" value="#rsContactInfo.phone#"
label="Phone: "/>
</cfformitem>
<!--- Problem: --->
<cfsaveContent variable="gotoPagejs">
<!--- Use getURL to call JS from Flash --->
getURL("javascript:GotoPage(#rsContactInfo.id#);");
</cfsavecontent>
<cfinput name="Order" type="button" value="Create Book
Order" onClick="#gotoPagejs#">
</cfformgroup>
</cfloop>
</cfformgroup>
</cfformgroup>
</cfformgroup>
<cfinput name="Save" type="submit" value="Save
Changes">
</cfform>
</cfoutput>
</body>
</html>
Reset the page zoom on pages that cause problems: <b>View > Zoom > Reset</b> (Ctrl+0 (zero); Cmd+0 on Mac)
* http://kb.mozillazine.org/Zoom_text_of_web_pages
You can use one of these extensions to adjust the default font size and page zoom on web pages:
* Default FullZoom Level - https://addons.mozilla.org/firefox/addon/6965
* NoSquint - https://addons.mozilla.org/firefox/addon/2592
Similar Messages
-
How can I have a white page as when I click to Home in place to have the Google search page ?
how can I have a white page as when I click to Home in place to have the Google search page ?
See http://www.google.com/support/toolbar/bin/answer.py?answer=115561 Web-browsing tools : Google new tab page and most visited websites - Toolbar Help
-
How to only have certain contacts on specific devices
We updated to iCloud on our iPhone 4's....now my husband has all of my contacts, as well as all of his. But I only have mine. What happened? I updated mine first.
What should we do?In order to use iCloud every person should have his own Apple ID for iCloud. This allows to keep contacts seperated.
You can still use the same Apple ID for purchases: Settings->Store
But I would suggest that everybody uses an additionnal personal Apple ID for iCloud: Settings->iCloud
Feel free to ask, when having more questions! -
I want know to restart my ipod
Try a reset:
Hold the home and power buttons at the same time until the Apple logo appears. No data will be lost. -
On a form w Validation, how to redirect to a custom page
Hi. I have created a form in Dreamweaver CS5 that uses spry validation successfully. Once the form is submitted, the user is redirected to the home page. But I don't want that redirect.
My question is, how can I have the validated page redirect to a custom thank you page I designed? I don't know the exact code/syntax to write to make it do what I want and, even if I had the code, I wouldn't know exactly where it should be placed. Please help if you can. Here's the source code. )BTW, when I use Dreamweaver Behaviors to add a URL redirect, it ignores the required validation and simply allows you to click the submit button and redirect.) Many thanks!
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<link href="../_css/main.css" rel="stylesheet" media="screen, projection">
<link href="../_css/forms.css" rel="stylesheet" media="screen, projection">
<title></title>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script><![endif]-->
<script src="../SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
<link href="../SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
<!-- **** I think the line of code for the redirect is here??...I just don't know how to write the code to redirect to the page I want ***** -->
function MM_goToURL() { //v3.0
var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
</script>
</head>
<body>
<header id="pageHeader">
<a href="../index.htm"><img src="../_images/logo.gif" width="170" height="91" alt="HMN logo" id="logo"></a>
<img src="../_images/tagline.png" width="296" height="92" alt="HMN tagline" id="tagline">
</header>
<nav id="mainNav">
<ul>
<li><a href="../index.htm">Home</a></li>
<li><a href="../press.htm">Press</a></li>
<li><a href="../about.htm">About</a></li>
<li><a href="../contact.htm">Contact</a></li>
</ul>
</nav>
<br class="clear">
<div class="headerContact">
</div>
<article>
<!-- The file webformmailer.php sits on the web server at godaddy.com in case that matters -->
<section id="Request">
<p id="intro">To request your link for the downloadable <span id="highlight">Media Kit</span>, please provide the following information:</p>
<form name="Request" method="post" action="../../webformmailer.php"> <p id="formCaption">Fields marked with * are required.</p>
<p><span id="sprytextfield1">
<label for="first_name">First Name:*</label>
<input type="text" name="first_name" id="first_name">
<span class="textfieldRequiredMsg">(required)</span></span></p>
<p><span id="sprytextfield2">
<label for="last_name">Last Name:*</label>
<input type="text" name="last_name" id="last_name">
<span class="textfieldRequiredMsg">(required)</span></span></p>
<p><span id="sprytextfield3">
<label for="company">Company:*</label>
<input type="text" name="company" id="company">
<span class="textfieldRequiredMsg">(required)</span></span></p>
<p>
<label for="address">Address:</label>
<input type="text" name="address" id="address">
</p>
<p>
<label for="address_2">Address 2:</label>
<input type="text" name="address_2" id="address_2">
</p>
<p>
<label for="city">City:</label>
<input type="text" name="city" id="city">
</p>
<p>
<label for="state">State:</label>
<input type="text" name="state" id="state">
</p>
<p>
<label for="zip">Zip:</label>
<input type="text" name="zip" id="zip">
</p>
<p><span id="sprytextfield4">
<label for="email">Email:*</label>
<input type="text" name="email" id="email">
<span class="textfieldRequiredMsg">(required)</span><span class="textfieldInvalidFormatMsg">Invalid format.</span></span> </p>
<p>
<input name="submit" type="image" id="submit" onClick="MM_goToURL('parent','media_kit_download.htm');return document.MM_returnValue" src="../_images/btn_submit.png">
</p>
<p> </p>
</form>
<p>
</p>
</div>
</div>
</section>
</article>
<script type="text/javascript">
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {validateOn:["blur"]});
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "none", {validateOn:["blur"]});
var sprytextfield3 = new Spry.Widget.ValidationTextField("sprytextfield3", "none", {validateOn:["blur"]});
var sprytextfield4 = new Spry.Widget.ValidationTextField("sprytextfield4", "email", {validateOn:["blur"]});
</script>
</body>
</html>Thanks for replying. The URL you've bolded is actually the correct page I'd like the redirect to go to when the form is successfully submitted after validation. But for some reason, that URL request is being ignored and the redirect brings me back to the index page in the root directory. I don't see anywhere in the code that makes the request to do that. Unless that's a default behavior if I've gotten the redirect wrong?
I don't know if this is helpful, but there is also a .js file that Dreamweaver created and attached to the above HTML source file. The .js file appears to have all the spry code validation including code for features and widgets I'm not even using. I searched through the code several times trying to identify where there might be a redirect to the index page but didn't recognize anything that made sense to me. Here is the complete, unedited file:
// SpryValidationTextField.js - version 0.38 - Spry Pre-Release 1.6.1
// Copyright (c) 2006. Adobe Systems Incorporated.
// All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// * Neither the name of Adobe Systems Incorporated nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
(function() { // BeginSpryComponent
if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};
Spry.Widget.BrowserSniff = function()
var b = navigator.appName.toString();
var up = navigator.platform.toString();
var ua = navigator.userAgent.toString();
this.mozilla = this.ie = this.opera = this.safari = false;
var re_opera = /Opera.([0-9\.]*)/i;
var re_msie = /MSIE.([0-9\.]*)/i;
var re_gecko = /gecko/i;
var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
var r = false;
if ( (r = ua.match(re_opera))) {
this.opera = true;
this.version = parseFloat(r[1]);
} else if ( (r = ua.match(re_msie))) {
this.ie = true;
this.version = parseFloat(r[1]);
} else if ( (r = ua.match(re_safari))) {
this.safari = true;
this.version = parseFloat(r[2]);
} else if (ua.match(re_gecko)) {
var re_gecko_version = /rv:\s*([0-9\.]+)/i;
r = ua.match(re_gecko_version);
this.mozilla = true;
this.version = parseFloat(r[1]);
this.windows = this.mac = this.linux = false;
this.Platform = ua.match(/windows/i) ? "windows" :
(ua.match(/linux/i) ? "linux" :
(ua.match(/mac/i) ? "mac" :
ua.match(/unix/i)? "unix" : "unknown"));
this[this.Platform] = true;
this.v = this.version;
if (this.safari && this.mac && this.mozilla) {
this.mozilla = false;
Spry.is = new Spry.Widget.BrowserSniff();
Spry.Widget.ValidationTextField = function(element, type, options)
type = Spry.Widget.Utils.firstValid(type, "none");
if (typeof type != 'string') {
this.showError('The second parameter in the constructor should be the validation type, the options are the third parameter.');
return;
if (typeof Spry.Widget.ValidationTextField.ValidationDescriptors[type] == 'undefined') {
this.showError('Unknown validation type received as the second parameter.');
return;
options = Spry.Widget.Utils.firstValid(options, {});
this.type = type;
if (!this.isBrowserSupported()) {
//disable character masking and pattern behaviors for low level browsers
options.useCharacterMasking = false;
this.init(element, options);
//make sure we validate at least on submit
var validateOn = ['submit'].concat(Spry.Widget.Utils.firstValid(this.options.validateOn, []));
validateOn = validateOn.join(",");
this.validateOn = 0;
this.validateOn = this.validateOn | (validateOn.indexOf('submit') != -1 ? Spry.Widget.ValidationTextField.ONSUBMIT : 0);
this.validateOn = this.validateOn | (validateOn.indexOf('blur') != -1 ? Spry.Widget.ValidationTextField.ONBLUR : 0);
this.validateOn = this.validateOn | (validateOn.indexOf('change') != -1 ? Spry.Widget.ValidationTextField.ONCHANGE : 0);
if (Spry.Widget.ValidationTextField.onloadDidFire)
this.attachBehaviors();
else
Spry.Widget.ValidationTextField.loadQueue.push(this);
Spry.Widget.ValidationTextField.ONCHANGE = 1;
Spry.Widget.ValidationTextField.ONBLUR = 2;
Spry.Widget.ValidationTextField.ONSUBMIT = 4;
Spry.Widget.ValidationTextField.ERROR_REQUIRED = 1;
Spry.Widget.ValidationTextField.ERROR_FORMAT = 2;
Spry.Widget.ValidationTextField.ERROR_RANGE_MIN = 4;
Spry.Widget.ValidationTextField.ERROR_RANGE_MAX = 8;
Spry.Widget.ValidationTextField.ERROR_CHARS_MIN = 16;
Spry.Widget.ValidationTextField.ERROR_CHARS_MAX = 32;
/* validation parameters:
* - characterMasking : prevent typing of characters not matching an regular expression
* - regExpFilter : additional regular expression to disalow typing of characters
* (like the "-" sign in the middle of the value); use for partial matching of the currently typed value;
* the typed value must match regExpFilter at any moment
* - pattern : enforce character on each position inside a pattern (AX0?)
* - validation : function performing logic validation; return false if failed and the typedValue value on success
* - minValue, maxValue : range validation; check if typedValue inside the specified range
* - minChars, maxChars : value length validation; at least/at most number of characters
Spry.Widget.ValidationTextField.ValidationDescriptors = {
'none': {
'custom': {
'integer': {
characterMasking: /[\-\+\d]/,
regExpFilter: /^[\-\+]?\d*$/,
validation: function(value, options) {
if (value == '' || value == '-' || value == '+') {
return false;
var regExp = /^[\-\+]?\d*$/;
if (!regExp.test(value)) {
return false;
options = options || {allowNegative:false};
var ret = parseInt(value, 10);
if (!isNaN(ret)) {
var allowNegative = true;
if (typeof options.allowNegative != 'undefined' && options.allowNegative == false) {
allowNegative = false;
if (!allowNegative && value < 0) {
ret = false;
} else {
ret = false;
return ret;
'real': {
characterMasking: /[\d\.,\-\+e]/i,
regExpFilter: /^[\-\+]?\d(?:|\.,\d{0,2})|(?:|e{0,1}[\-\+]?\d{0,})$/i,
validation: function (value, options) {
var regExp = /^[\+\-]?[0-9]+([\.,][0-9]+)?([eE]{0,1}[\-\+]?[0-9]+)?$/;
if (!regExp.test(value)) {
return false;
var ret = parseFloat(value);
if (isNaN(ret)) {
ret = false;
return ret;
'currency': {
formats: {
'dot_comma': {
characterMasking: /[\d\.\,\-\+\$]/,
regExpFilter: /^[\-\+]?(?:[\d\.]*)+(|\,\d{0,2})$/,
validation: function(value, options) {
var ret = false;
//2 or no digits after the comma
if (/^(\-|\+)?\d{1,3}(?:\.\d{3})*(?:\,\d{2}|)$/.test(value) || /^(\-|\+)?\d+(?:\,\d{2}|)$/.test(value)) {
value = value.toString().replace(/\./gi, '').replace(/\,/, '.');
ret = parseFloat(value);
return ret;
'comma_dot': {
characterMasking: /[\d\.\,\-\+\$]/,
regExpFilter: /^[\-\+]?(?:[\d\,]*)+(|\.\d{0,2})$/,
validation: function(value, options) {
var ret = false;
//2 or no digits after the comma
if (/^(\-|\+)?\d{1,3}(?:\,\d{3})*(?:\.\d{2}|)$/.test(value) || /^(\-|\+)?\d+(?:\.\d{2}|)$/.test(value)) {
value = value.toString().replace(/\,/gi, '');
ret = parseFloat(value);
return ret;
'email': {
characterMasking: /[^\s]/,
validation: function(value, options) {
var rx = /^[\w\.-]+@[\w\.-]+\.\w+$/i;
return rx.test(value);
'date': {
validation: function(value, options) {
var formatRegExp = /^([mdy]+)[\.\-\/\\\s]+([mdy]+)[\.\-\/\\\s]+([mdy]+)$/i;
var valueRegExp = this.dateValidationPattern;
var formatGroups = options.format.match(formatRegExp);
var valueGroups = value.match(valueRegExp);
if (formatGroups !== null && valueGroups !== null) {
var dayIndex = -1;
var monthIndex = -1;
var yearIndex = -1;
for (var i=1; i<formatGroups.length; i++) {
switch (formatGroups[i].toLowerCase()) {
case "dd":
dayIndex = i;
break;
case "mm":
monthIndex = i;
break;
case "yy":
case "yyyy":
yearIndex = i;
break;
if (dayIndex != -1 && monthIndex != -1 && yearIndex != -1) {
var maxDay = -1;
var theDay = parseInt(valueGroups[dayIndex], 10);
var theMonth = parseInt(valueGroups[monthIndex], 10);
var theYear = parseInt(valueGroups[yearIndex], 10);
// Check month value to be between 1..12
if (theMonth < 1 || theMonth > 12) {
return false;
// Calculate the maxDay according to the current month
switch (theMonth) {
case 1: // January
case 3: // March
case 5: // May
case 7: // July
case 8: // August
case 10: // October
case 12: // December
maxDay = 31;
break;
case 4: // April
case 6: // June
case 9: // September
case 11: // November
maxDay = 30;
break;
case 2: // February
if ((parseInt(theYear/4, 10) * 4 == theYear) && (theYear % 100 != 0 || theYear % 400 == 0)) {
maxDay = 29;
} else {
maxDay = 28;
break;
// Check day value to be between 1..maxDay
if (theDay < 1 || theDay > maxDay) {
return false;
// If successfull we'll return the date object
return (new Date(theYear, theMonth - 1, theDay)); //JavaScript requires a month between 0 and 11
} else {
return false;
'time': {
validation: function(value, options) {
// HH:MM:SS T
var formatRegExp = /([hmst]+)/gi;
var valueRegExp = /(\d+|AM?|PM?)/gi;
var formatGroups = options.format.match(formatRegExp);
var valueGroups = value.match(valueRegExp);
//mast match and have same length
if (formatGroups !== null && valueGroups !== null) {
if (formatGroups.length != valueGroups.length) {
return false;
var hourIndex = -1;
var minuteIndex = -1;
var secondIndex = -1;
//T is AM or PM
var tIndex = -1;
var theHour = 0, theMinute = 0, theSecond = 0, theT = 'AM';
for (var i=0; i<formatGroups.length; i++) {
switch (formatGroups[i].toLowerCase()) {
case "hh":
hourIndex = i;
break;
case "mm":
minuteIndex = i;
break;
case "ss":
secondIndex = i;
break;
case "t":
case "tt":
tIndex = i;
break;
if (hourIndex != -1) {
var theHour = parseInt(valueGroups[hourIndex], 10);
if (isNaN(theHour) || theHour > (formatGroups[hourIndex] == 'HH' ? 23 : 12 )) {
return false;
if (minuteIndex != -1) {
var theMinute = parseInt(valueGroups[minuteIndex], 10);
if (isNaN(theMinute) || theMinute > 59) {
return false;
if (secondIndex != -1) {
var theSecond = parseInt(valueGroups[secondIndex], 10);
if (isNaN(theSecond) || theSecond > 59) {
return false;
if (tIndex != -1) {
var theT = valueGroups[tIndex].toUpperCase();
if (
formatGroups[tIndex].toUpperCase() == 'TT' && !/^a|pm$/i.test(theT) ||
formatGroups[tIndex].toUpperCase() == 'T' && !/^a|p$/i.test(theT)
return false;
var date = new Date(2000, 0, 1, theHour + (theT.charAt(0) == 'P'?12:0), theMinute, theSecond);
return date;
} else {
return false;
'credit_card': {
characterMasking: /\d/,
validation: function(value, options) {
var regExp = null;
options.format = options.format || 'ALL';
switch (options.format.toUpperCase()) {
case 'ALL': regExp = /^[3-6]{1}[0-9]{12,18}$/; break;
case 'VISA': regExp = /^4(?:[0-9]{12}|[0-9]{15})$/; break;
case 'MASTERCARD': regExp = /^5[1-5]{1}[0-9]{14}$/; break;
case 'AMEX': regExp = /^3(4|7){1}[0-9]{13}$/; break;
case 'DISCOVER': regExp = /^6011[0-9]{12}$/; break;
case 'DINERSCLUB': regExp = /^3(?:(0[0-5]{1}[0-9]{11})|(6[0-9]{12})|(8[0-9]{12}))$/; break;
if (!regExp.test(value)) {
return false;
var digits = [];
var j = 1, digit = '';
for (var i = value.length - 1; i >= 0; i--) {
if ((j%2) == 0) {
digit = parseInt(value.charAt(i), 10) * 2;
digits[digits.length] = digit.toString().charAt(0);
if (digit.toString().length == 2) {
digits[digits.length] = digit.toString().charAt(1);
} else {
digit = value.charAt(i);
digits[digits.length] = digit;
j++;
var sum = 0;
for(i=0; i < digits.length; i++ ) {
sum += parseInt(digits[i], 10);
if ((sum%10) == 0) {
return true;
return false;
'zip_code': {
formats: {
'zip_us9': {
pattern:'00000-0000'
'zip_us5': {
pattern:'00000'
'zip_uk': {
characterMasking: /[\dA-Z\s]/,
validation: function(value, options) {
//check one of the following masks
// AN NAA, ANA NAA, ANN NAA, AAN NAA, AANA NAA, AANN NAA
return /^[A-Z]{1,2}\d[\dA-Z]?\s?\d[A-Z]{2}$/.test(value);
'zip_canada': {
characterMasking: /[\dA-Z\s]/,
pattern: 'A0A 0A0'
'zip_custom': {}
'phone_number': {
formats: {
//US phone number; 10 digits
'phone_us': {
pattern:'(000) 000-0000'
'phone_custom': {}
'social_security_number': {
pattern:'000-00-0000'
'ip': {
characterMaskingFormats: {
'ipv4': /[\d\.]/i,
'ipv6_ipv4': /[\d\.\:A-F\/]/i,
'ipv6': /[\d\.\:A-F\/]/i
validation: function (value, options) {
return Spry.Widget.ValidationTextField.validateIP(value, options.format);
'url': {
characterMasking: /[^\s]/,
validation: function(value, options) {
//fix for ?ID=223429 and ?ID=223387
/* the following regexp matches components of an URI as specified in http://tools.ietf.org/html/rfc3986#page-51 page 51, Appendix B.
scheme = $2
authority = $4
path = $5
query = $7
fragment = $9
var URI_spliter = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
var parts = value.match(URI_spliter);
if (parts && parts[4]) {
//encode each component of the domain name using Punycode encoding scheme: http://tools.ietf.org/html/rfc3492
var host = parts[4].split(".");
var punyencoded = '';
for (var i=0; i<host.length; i++) {
punyencoded = Spry.Widget.Utils.punycode_encode(host[i], 64);
if (!punyencoded) {
return false;
} else {
if (punyencoded != (host[i] + "-")) {
host[i] = 'xn--' + punyencoded;
host = host .join(".");
//the encoded domain name is replaced into the original URL to be validated again later as URL
value = value.replace(URI_spliter, "$1//" + host + "$5$6$8");
//fix for ?ID=223358 and ?ID=223594
//the following validates an URL using ABNF rules as defined in http://tools.ietf.org/html/rfc3986 , Appendix A., page 49
//except host which is extracted by match[1] and validated separately
* userinfo= (?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=:]|%[0-9a-f]{2,2})*\@)?
* host= (?:((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?: \[[^\]]*\]))
* pathname= (?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*
* query= (?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?
* anchor= (?:\#(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?
var regExp = /^(?:https?|ftp)\:\/\/(?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=:]|%[0-9a-f]{2,2})*\@)?(?: ((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?:\[[^ \]]*\]))(?:\:[0-9]*)?)(?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*( ?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?(?:\#(?:[a-z0-9\-\._ ~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?$/i;
var valid = value.match(regExp);
if (valid) {
//extract the address from URL
var address = valid[1];
if (address) {
if (address == '[]') {
return false;
if (address.charAt(0) == '[' ) {
//IPv6 address or IPv4 enclosed in square brackets
address = address.replace(/^\[|\]$/gi, '');
return Spry.Widget.ValidationTextField.validateIP(address, 'ipv6_ipv4');
} else {
if (/[^0-9\.]/.test(address)) {
return true;
} else {
//check if hostname is all digits and dots and then check for IPv4
return Spry.Widget.ValidationTextField.validateIP(address, 'ipv4');
} else {
return true;
} else {
return false;
2.2.1. Preferred
x:x:x:x:x:x:x:x, where the 'x's are the hexadecimal values of the eight 16-bit pieces of the address.
Examples:
FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
1080:0:0:0:8:800:200C:417A
Note that it is not necessary to write the leading zeros in an
individual field, but there must be at least one numeral in every
field (except for the case described in 2.2.2.).
2.2.2. Compressed
The use of "::" indicates multiple groups of 16-bits of zeros.
The "::" can only appear once in an address. The "::" can also be
used to compress the leading and/or trailing zeros in an address.
1080:0:0:0:8:800:200C:417A --> 1080::8:800:200C:417A
FF01:0:0:0:0:0:0:101 --> FF01::101
0:0:0:0:0:0:0:1 --> ::1
0:0:0:0:0:0:0:0 --> ::
2.5.4 IPv6 Addresses with Embedded IPv4 Addresses
IPv4-compatible IPv6 address (tunnel IPv6 packets over IPv4 routing infrastructures)
::0:129.144.52.38
IPv4-mapped IPv6 address (represent the addresses of IPv4-only nodes as IPv6 addresses)
::ffff:129.144.52.38
The text representation of IPv6 addresses and prefixes in Augmented BNF (Backus-Naur Form) [ABNF] for reference purposes.
[ABNF http://tools.ietf.org/html/rfc2234]
IPv6address = hexpart [ ":" IPv4address ]
IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
IPv6prefix = hexpart "/" 1*2DIGIT
hexpart = hexseq | hexseq "::" [ hexseq ] | "::" [ hexseq ]
hexseq = hex4 *( ":" hex4)
hex4 = 1*4HEXDIG
Spry.Widget.ValidationTextField.validateIP = function (value, format)
var validIPv6Addresses = [
//preferred
/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}(?:\/\d{1,3})?$/i,
//various compressed
/^[a-f0-9]{0,4}::(?:\/\d{1,3})?$/i,
/^:(?::[a-f0-9]{1,4}){1,6}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){1,6}:(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,6}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,5}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,4}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}){1,3}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){5}(?::[a-f0-9]{1,4}){1,2}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){6}(?::[a-f0-9]{1,4})(?:\/\d{1,3})?$/i,
//IPv6 mixes with IPv4
/^(?:[a-f0-9]{1,4}:){6}(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
/^:(?::[a-f0-9]{1,4}){0,4}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){1,5}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,4}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,3}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,2}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,
/^(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}):(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i
var validIPv4Addresses = [
//IPv4
/^(\d{1,3}\.){3}\d{1,3}$/i
var validAddresses = [];
if (format == 'ipv6' || format == 'ipv6_ipv4') {
validAddresses = validAddresses.concat(validIPv6Addresses);
if (format == 'ipv4' || format == 'ipv6_ipv4') {
validAddresses = validAddresses.concat(validIPv4Addresses);
var ret = false;
for (var i=0; i<validAddresses.length; i++) {
if (validAddresses[i].test(value)) {
ret = true;
break;
if (ret && value.indexOf(".") != -1) {
//if address contains IPv4 fragment, it must be valid; all 4 groups must be less than 256
var ipv4 = value.match(/:?(?:\d{1,3}\.){3}\d{1,3}/i);
if(!ipv4) {
return false;
ipv4 = ipv4[0].replace(/^:/, '');
var pieces = ipv4.split('.');
if (pieces.length != 4) {
return false;
var regExp = /^[\-\+]?\d*$/;
for (var i=0; i< pieces.length; i++) {
if (pieces[i] == '') {
return false;
var piece = parseInt(pieces[i], 10);
if (isNaN(piece) || piece > 255 || !regExp.test(pieces[i]) || pieces[i].length>3 || /^0{2,3}$/.test(pieces[i])) {
return false;
if (ret && value.indexOf("/") != -1) {
// if prefix-length is specified must be in [1-128]
var prefLen = value.match(/\/\d{1,3}$/);
if (!prefLen) return false;
var prefLenVal = parseInt(prefLen[0].replace(/^\//,''), 10);
if (isNaN(prefLenVal) || prefLenVal > 128 || prefLenVal < 1) {
return false;
return ret;
Spry.Widget.ValidationTextField.onloadDidFire = false;
Spry.Widget.ValidationTextField.loadQueue = [];
Spry.Widget.ValidationTextField.prototype.isBrowserSupported = function()
return Spry.is.ie && Spry.is.v >= 5 && Spry.is.windows
||
Spry.is.mozilla && Spry.is.v >= 1.4
||
Spry.is.safari
||
Spry.is.opera && Spry.is.v >= 9;
Spry.Widget.ValidationTextField.prototype.init = function(element, options)
this.element = this.getElement(element);
this.errors = 0;
this.flags = {locked: false, restoreSelection: true};
this.options = {};
this.event_handlers = [];
this.validClass = "textfieldValidState";
this.focusClass = "textfieldFocusState";
this.requiredClass = "textfieldRequiredState";
this.hintClass = "textfieldHintState";
this.invalidFormatClass = "textfieldInvalidFormatState";
this.invalidRangeMinClass = "textfieldMinValueState";
this.invalidRangeMaxClass = "textfieldMaxValueState";
this.invalidCharsMinClass = "textfieldMinCharsState";
this.invalidCharsMaxClass = "textfieldMaxCharsState";
this.textfieldFlashTextClass = "textfieldFlashText";
if (Spry.is.safari) {
this.flags.lastKeyPressedTimeStamp = 0;
switch (this.type) {
case 'phone_number':options.format = Spry.Widget.Utils.firstValid(options.format, 'phone_us');break;
case 'currency':options.format = Spry.Widget.Utils.firstValid(options.format, 'comma_dot');break;
case 'zip_code':options.format = Spry.Widget.Utils.firstValid(options.format, 'zip_us5');break;
case 'date':
options.format = Spry.Widget.Utils.firstValid(options.format, 'mm/dd/yy');
break;
case 'time':
options.format = Spry.Widget.Utils.firstValid(options.format, 'HH:mm');
options.pattern = options.format.replace(/[hms]/gi, "0").replace(/TT/gi, 'AM').replace(/T/gi, 'A');
break;
case 'ip':
options.format = Spry.Widget.Utils.firstValid(options.format, 'ipv4');
options.characterMasking = Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].characterMaskingFormats[ options.format];
break;
//retrieve the validation type descriptor to be used with this instance (base on type and format)
//widgets may have different validations depending on format (like zip_code with formats)
var validationDescriptor = {};
if (options.format && Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats) {
if (Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[options.format] ) {
Spry.Widget.Utils.setOptions(validationDescriptor, Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[options.format]) ;
} else {
Spry.Widget.Utils.setOptions(validationDescriptor, Spry.Widget.ValidationTextField.ValidationDescriptors[this.type]);
//set default values for some parameters which were not aspecified
options.useCharacterMasking = Spry.Widget.Utils.firstValid(options.useCharacterMasking, false);
options.hint = Spry.Widget.Utils.firstValid(options.hint, '');
options.isRequired = Spry.Widget.Utils.firstValid(options.isRequired, true);
options.additionalError = Spry.Widget.Utils.firstValid(options.additionalError, false);
if (options.additionalError)
options.additionalError = this.getElement(options.additionalError);
//set widget validation parameters
//get values from validation type descriptor
//use the user specified values, if defined
options.characterMasking = Spry.Widget.Utils.firstValid(options.characterMasking, validationDescriptor.characterMasking);
options.regExpFilter = Spry.Widget.Utils.firstValid(options.regExpFilter, validationDescriptor.regExpFilter);
options.pattern = Spry.Widget.Utils.firstValid(options.pattern, validationDescriptor.pattern);
options.validation = Spry.Widget.Utils.firstValid(options.validation, validationDescriptor.validation);
if (typeof options.validation == 'string') {
options.validation = eval(options.validation);
options.minValue = Spry.Widget.Utils.firstValid(options.minValue, validationDescriptor.minValue);
options.maxValue = Spry.Widget.Utils.firstValid(options.maxValue, validationDescriptor.maxValue);
options.minChars = Spry.Widget.Utils.firstValid(options.minChars, validationDescriptor.minChars);
options.maxChars = Spry.Widget.Utils.firstValid(options.maxChars, validationDescriptor.maxChars);
Spry.Widget.Utils.setOptions(this, options);
Spry.Widget.Utils.setOptions(this.options, options);
Spry.Widget.ValidationTextField.prototype.destroy = function() {
if (this.event_handlers)
for (var i=0; i<this.event_handlers.length; i++) {
Spry.Widget.Utils.removeEventListener(this.event_handlers[i][0], this.event_handlers[i][1], this.event_handlers[i][2], false);
try { delete this.element; } catch(err) {}
try { delete this.input; } catch(err) {}
try { delete this.form; } catch(err) {}
try { delete this.event_handlers; } catch(err) {}
try { this.selection.destroy(); } catch(err) {}
try { delete this.selection; } catch(err) {}
var q = Spry.Widget.Form.onSubmitWidgetQueue;
var qlen = q.length;
for (var i = 0; i < qlen; i++) {
if (q[i] == this) {
q.splice(i, 1);
break;
Spry.Widget.ValidationTextField.prototype.attachBehaviors = function()
if (this.element) {
if (this.element.nodeName == "INPUT") {
this.input = this.element;
} else {
this.input = Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(this.element, "INPUT");
if (this.input) {
if (this.maxChars) {
this.input.removeAttribute("maxLength");
this.putHint();
this.compilePattern();
if (this.type == 'date') {
this.compileDatePattern();
this.input.setAttribute("AutoComplete", "off");
this.selection = new Spry.Widget.SelectionDescriptor(this.input);
this.oldValue = this.input.value;
var self = this;
this.event_handlers = [];
this.event_handlers.push([this.input, "keydown", function(e) { if (self.isDisabled()) return true; return self.onKeyDown(e || event); }]);
this.event_handlers.push([this.input, "keypress", function(e) { if (self.isDisabled()) return true; return self.onKeyPress(e || event); }]);
if (Spry.is.opera) {
this.event_handlers.push([this.input, "keyup", function(e) { if (self.isDisabled()) return true; return self.onKeyUp(e || event); }]);
this.event_handlers.push([this.input, "focus", function(e) { if (self.isDisabled()) return true; return self.onFocus(e || event); }]);
this.event_handlers.push([this.input, "blur", function(e) { if (self.isDisabled()) return true; return self.onBlur(e || event); }]);
this.event_handlers.push([this.input, "mousedown", function(e) { if (self.isDisabled()) return true; return self.onMouseDown(e || event); }]);
var changeEvent =
Spry.is.mozilla || Spry.is.opera || Spry.is.safari?"input":
Spry.is.ie?"propertychange":
"change";
this.event_handlers.push([this.input, changeEvent, function(e) { if (self.isDisabled()) return true; return self.onChange(e || event); }]);
if (Spry.is.mozilla || Spry.is.safari) {
//oninput event on mozilla does not fire ondragdrop
this.event_handlers.push([this.input, "dragdrop", function(e) { if (self.isDisabled()) return true; self.removeHint();return self.onChange(e || event); }]);
} else if (Spry.is.ie){
//ondrop&onpropertychange crash on IE
this.event_handlers.push([this.input, "drop", function(e) { if (self.isDisabled()) return true; return self.onDrop(e || event); }]);
for (var i=0; i<this.event_handlers.length; i++) {
Spry.Widget.Utils.addEventListener(this.event_handlers[i][0], this.event_handlers[i][1], this.event_handlers[i][2], false);
// submit
this.form = Spry.Widget.Utils.getFirstParentWithNodeName(this.input, "FORM");
if (this.form) {
// if no "onSubmit" handler has been attached to the current form, attach one
if (!this.form.attachedSubmitHandler && !this.form.onsubmit) {
this.form.onsubmit = function(e) { e = e || event; return Spry.Widget.Form.onSubmit(e, e.srcElement || e.currentTarget) };
this.form.attachedSubmitHandler = true;
if (!this.form.attachedResetHandler) {
Spry.Widget.Utils.addEventListener(this.form, "reset", function(e) { e = e || event; return Spry.Widget.Form.onReset(e, e.srcElement || e.currentTarget) }, false);
this.form.attachedResetHandler = true;
// add the currrent widget to the "onSubmit" check queue;
Spry.Widget.Form.onSubmitWidgetQueue.push(this);
Spry.Widget.ValidationTextField.prototype.isDisabled = function() {
return this.input && (this.input.disabled || this.input.readOnly) || !this.input;
Spry.Widget.ValidationTextField.prototype.getElement = function(ele)
if (ele && typeof ele == "string")
return document.getElementById(ele);
return ele;
Spry.Widget.ValidationTextField.addLoadListener = function(handler)
if (typeof window.addEventListener != 'undefined')
window.addEventListener('load', handler, false);
else if (typeof document.addEventListener != 'undefined')
document.addEventListener('load', handler, false);
else if (typeof window.attachEvent != 'undefined')
window.attachEvent('onload', handler);
Spry.Widget.ValidationTextField.processLoadQueue = function(handler)
Spry.Widget.ValidationTextField.onloadDidFire = true;
var q = Spry.Widget.ValidationTextField.loadQueue;
var qlen = q.length;
for (var i = 0; i < qlen; i++)
q[i].attachBehaviors();
Spry.Widget.ValidationTextField.addLoadListener(Spry.Widget.ValidationTextField.processLoa dQueue);
Spry.Widget.ValidationTextField.addLoadListener(function(){
Spry.Widget.Utils.addEventListener(window, "unload", Spry.Widget.Form.destroyAll, false);
Spry.Widget.ValidationTextField.prototype.setValue = function(newValue) {
this.flags.locked = true;
this.input.value = newValue;
this.flags.locked = false;
this.oldValue = newValue;
if (!Spry.is.ie) {
this.onChange();
* save the state of the input (selection and value) so we can revert to it
* should call this just before modifying the input value
Spry.Widget.ValidationTextField.prototype.saveState = function()
this.oldValue = this.input.value;
this.selection.update();
Spry.Widget.ValidationTextField.prototype.revertState = function(revertValue)
if (revertValue != this.input.value) {
this.input.readOnly = true;
this.input.value = revertValue;
this.input.readOnly = false;
if (Spry.is.safari && this.flags.active) {
this.input.focus();
if (this.flags.restoreSelection) {
this.selection.moveTo(this.selection.start, this.selection.end);
this.redTextFlash();
Spry.Widget.ValidationTextField.prototype.removeHint = function()
if (this.flags.hintOn) {
this.input.value = "";
this.flags.hintOn = false;
this.removeClassName(this.element, this.hintClass);
this.removeClassName(this.additionalError, this.hintClass);
Spry.Widget.ValidationTextField.prototype.putHint = function()
if(this.hint && this.input && this.input.type == "text" && this.input.value == "") {
this.flags.hintOn = true;
this.input.value = this.hint;
this.addClassName(this.element, this.hintClass);
this.addClassName(this.additionalError, this.hintClass);
Spry.Widget.ValidationTextField.prototype.redTextFlash = function()
var self = this;
this.addClassName(this.element, this.textfieldFlashTextClass);
setTimeout(function() {
self.removeClassName(self.element, self.textfieldFlashTextClass)
}, 100);
Spry.Widget.ValidationTextField.prototype.doValidations = function(testValue, revertValue)
if (this.isDisabled()) return false;
if (this.flags.locked) {
return false;
if (testValue.length == 0 && !this.isRequired) {
this.errors = 0;
return false;
this.flags.locked = true;
var mustRevert = false;
var continueValidations = true;
if (!this.options.isRequired && testValue.length == 0) {
continueValidations = false;
var errors = 0;
var fixedValue = testValue;
//characterMasking - test if all characters are valid with the characterMasking (keyboard filter)
if (this.useCharacterMasking && this.characterMasking) {
for(var i=0; i<testValue.length; i++) {
if (!this.characterMasking.test(testValue.charAt(i))) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
fixedValue = revertValue;
mustRevert = true;
break;
//regExpFilter - character mask positioning (additional mask to restrict some characters only in some position)
if (!mustRevert && this.useCharacterMasking && this.regExpFilter) {
if (!this.regExpFilter.test(fixedValue)) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
mustRevert = true;
//pattern - testValue matches the pattern so far
if (!mustRevert && this.pattern) {
var currentRegExp = this.patternToRegExp(testValue.length);
if (!currentRegExp.test(testValue)) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
mustRevert = true;
} else if (this.patternLength != testValue.length) {
//testValue matches pattern so far, but it's not ok if it does not have the proper length
//do not revert, but should show the error
errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
if (fixedValue == '') {
errors = errors | Spry.Widget.ValidationTextField.ERROR_REQUIRED;
if (!mustRevert && this.pattern && this.useCharacterMasking) {
var n = this.getAutoComplete(testValue.length);
if (n) {
fixedValue += n;
if(!mustRevert && this.minChars !== null && continueValidations) {
if (testValue.length < this.minChars) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_CHARS_MIN;
continueValidations = false;
if(!mustRevert && this.maxChars !== null && continueValidations) {
if (testValue.length > this.maxChars) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_CHARS_MAX;
continueValidations = false;
//validation - testValue passes widget validation function
if (!mustRevert && this.validation && continueValidations) {
var value = this.validation(fixedValue, this.options);
if (false === value) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_FORMAT;
continueValidations = false;
} else {
this.typedValue = value;
if(!mustRevert && this.validation && this.minValue !== null && continueValidations) {
var minValue = this.validation(this.minValue.toString(), this.options);
if (minValue !== false) {
if (this.typedValue < minValue) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_RANGE_MIN;
continueValidations = false;
if(!mustRevert && this.validation && this.maxValue !== null && continueValidations) {
var maxValue = this.validation(this.maxValue.toString(), this.options);
if (maxValue !== false) {
if( this.typedValue > maxValue) {
errors = errors | Spry.Widget.ValidationTextField.ERROR_RANGE_MAX;
continueValidations = false;
//an invalid value was tested; must make sure it does not get inside the input
if (this.useCharacterMasking && mustRevert) {
this.revertState(revertValue);
this.errors = errors;
this.fixedValue = fixedValue;
this.flags.locked = false;
return mustRevert;
Spry.Widget.ValidationTextField.prototype.onChange = function(e)
if (Spry.is.opera && this.flags.operaRevertOnKeyUp) {
return true;
if (Spry.is.ie && e && e.propertyName != 'value') {
return true; -
I have a nice home page for Google. Have been using Foxfire for months, but can't figure out how to just have a home page that is useful. Info on plug-is, customization does not help. I have no base to work from.
Open up your Browser.
Click the Menu key and choose Options > Browser Configuration.
The 'Browser' field will confirm which Browser you are changing the settings for. Change to Internet browser if it is not already set.
Under the 'Start Page' field change to something other than the Bookmarks Page (Example, Home Page, or Last Page Loaded).
Save your settings and close the browser.
Attempt to open the Internet Browser application from the home screen. It should now successfully open to mobile.blackberry.com
Home Page by default is mobile.blackberry.com.
Message Edited by nerolijasmine on 09-09-2008 04:50 PM
If I've been helpful please consider giving me kudos. Please remember to resolve your thread .
***Visit BlackBerry Technical Solution Center (www.blackberry.com/btsc) for answers to your support questions, documentation & related resources*** -
I have a file with 64 pages in it. How do I save and email one specific page out of that file?
With nothing but the free Reader? Take a screenshot of the page and email the image.
-
i have 5 html pages that share a common header, footer, and sidebar. how do i use my nav bar to change the content of the body without duplicating a lot of code? thank you!
i inherited the website. It’s for a non-profit and is not very
sophisticated, and neither am I in webdesign. It currently has multiple
pages that are identical except for that body section, so whenever i change
the navigation (in the sidebar) I have to update every html page. I want
to have one basic page, and just call in the different body content based
on the link the user selects from the nav bar. How can i do that using a
script? i am using Dreamweaver.
~ in love and light ~
Jeannie
On Sat, Feb 7, 2015 at 4:07 AM, Ben Pleysier <[email protected]> -
On my mac when i click on pages, a new document doesn't open instantly but a window with my files open and then have to click on the left bottom < new document> in order to open one. How can i have directly a new document when i click on pages icon
How to open an existing Pages document?
Click Pages icon in the Dock to launch Pages.
When Pages is open, click File menu in the Pages menu bar.
Select “Open”.
When the select document dialog box opens up, highlight/select the document and click “Open”
at the bottom right corner of the dialog box.
s
https://support.apple.com/kb/PH15304?locale=en_US -
I have Pages 09. I have created custom templates and want to delete them. How do I delete a template I have created in Pages 09?
Pages stores those you created & saved as templates in (your account) > Library > Application Support > iWork > Pages > Templates > My Templates. The door to the user's Library is hidden in Lion but it is easy to open. In Finder, hold down the Option key while clicking on the Go menu & your users Library will appear about halfway down the list.
-
I have a 2 page (portaait format) PDF file how can I convert the PDF file into landscape format before I change it to XL?
Hi jsremick,
To change the page orientation of a PDF, you need to use Acrobat. (Reader allows you to rotate the page view, but not the pages themselves).
If you don't have Acrobat, feel free to give it a try. You can download the free 30-day trial from http://www.adobe.com/products/acrobat.html.
Best,
Sara -
I have upgraded to Pages 5.0.1 and now I cannot print or pass along "comments" in the text of a document. I previously was able to convert the Pages document, with comments, to a "Word" document so that others could view the edited text. How do I do that?
When you installed Pages v5, it automatically moved the older Pages ’09 v4.3 into /Applications/iWork '09 folder. If you want normal comment interoperability, you are advised to resume using the older version of Pages. Newer, is certainly not better with Pages v5.
-
How to I convert all the pages in a Pages document into simply pages, eliminating pages called "sections", so I can pick and chose specific pages to drag where I want (without dragging an entire section of pages)?
Insert a Section Break at the foot of each page
or:
Toolbar > Document > Document > uncheck Document Body
This will destroy any content in your document, but I presume that is what you want.
Peter -
I have an HP Photosmart C4180 all-in-one, printer, scanner and copier. I can't figure out how to scan more than one page? It will only let me do one page at a time and then I have difficulty sending pages 1, 2 and 3 as one docuement. Any ideas??
Thank you, JetteskiHello Jetteski,
Hello Jetteski, Thanks for the post.
Since you are running a MAC, check the below links for some excellent information on scanning. Good Luck!
http://goo.gl/M8Cl2
http://goo.gl/cufK6
http://goo.gl/OTQoR
I work for HP but my posts and replies are my own....Thank you! -
Hello!
I have a two page letter that I am putting together for my company.
I need the logo on the first page, but the next page(s) i do not want the logo and i do not want the indentation.
can someone help me solve this problem. Know it must be a quick fix
I also have the new version of Pages installed as well.In Word, all you should have to do (with the document open, of course), is choose Insert > Page Numbers… . Choose how you want them to appear and click OK.
Make sure to save the file to retain the page number addition.
Maybe you are looking for
-
Crystal Report Server Backup and Recovery problem
I have a problem on the backup Crystal Report Server My Environment: - Windows Server 2003 - Crystal Report Server XI R2 - MySQL Database for Central Management Server System Tables(Default setting in the Crystal Report Server installation) - Tomcat
-
InDesign, Illustrator and Photoshop crashing after recent file download
I recently downloaded what I thought was a font online. Photoshop, InDesign and Illustrator now all fail to open. I will never foolishly download anything online again. Can anyone help me get Photoshop, InDesign and Illustrator running again? More in
-
Why is loading some website so slow. before the newest Firfox, it was faster
porn sites are really slow downloading. they did not use to be. have you added additional blocks.?
-
I have recently acquired a Zeiss Photoscope (in effect, a spotting scope with an integrated camera) which records raw images as either JPG or DNG files or both. (I'm a birdwatcher who likes to take photos of them, not a photographer first and foremos
-
IPad home button issue. Nothing is working.
So I have had my iPad2 since December, and have had no issues until recently. A few days ago, the home button became slow to respond, and within minutes stopped worked altogether. I looked online for an answer, and one solution was to restore the dev