www.webdeveloper.com
Results 1 to 4 of 4

Thread: minterm/maxterm javascript

  1. #1
    Join Date
    Nov 2011
    Posts
    3

    Question minterm/maxterm javascript

    I am trying to generate an ajax form based on a database value of max and min years. At present i have the following.

    Code:
    function generatePurchaseFields(p, tld) {
    				new Ajax.Request('/control/?page=tldmaxyears&p=' + p, {
    					method: 'get',
    	  				onSuccess: function(transport) {
    						var maxyears = transport.headerJSON.years.maxterm;
    						var minyears = transport.headerJSON.years.minterm;
    					}
    				});
    				
    				var fields = '<select name="years">' +
    						'<option value="' + minyears + '">minyears Year</option>' +
    						
    					'</select>';
    					return fields;
    			}
    What I am struggling with is the logic to say if minyears is more than 1 (string in option needs to say years), then add in every year between min and max as additional options.

    My brain has been melting with this for a few days now, time to throw in the towel have a redbull and ask for some help.

    Kind thanks in advance.

    PodMan99

  2. #2
    Join Date
    Mar 2005
    Location
    Behind you...
    Posts
    873
    I can't say I'm particularly familiar with JSON, although I doubt that'll affect the necessary code you need as it only pertains to the output and formatting of a string.

    There are likely many other ways of doing this, and some may be more streamlined by my solution would be:
    Code:
    var fields = '<select name="years"><option value="' + minyears + '">' + minyears;
    if(minyears == 1) {
      fields += ' Year</option></select>';
    } else {
      fields += ' Years</option></select>';
    }
    return fields;
    "Given billions of tries, could a spilled bottle of ink ever fall into the words of Shakespeare?"

  3. #3
    Join Date
    Nov 2011
    Posts
    3
    I think im similar to your update but no joy


    The years are comming out of a JSON response on /control/?page=tldmaxyears&domain=' + dom

    which simply responds with an headder of

    X-JSON:{"years":{"minterm":"2","maxterm":"10"}}

    Ive been working on it some more, but no output.
    Code:
    var domains = [];
    PHP/HTML injects domains into my array with
    Code:
    window.domains.push(\"$_POST[d].$row[tld]\");
    then I do the following once my form has loaded. to populate the values with answers. more detail may shed some light on where I have gone wrong.

    Code:
    			var maxyears;
    			var minyears;
    			var rows = '';
    
    for (var domain in window.domains) {
    					runme(window.domains[domain]);
    			}
    
    function runme(dom) {
    	new Ajax.Request('/control/checkdomain.php?domain=' + dom, {
    	  method: 'get',
    		asynchronous: true,
    	  
    	  onSuccess: function(transport) {
    	    if (transport.responseText.match(/1/)) {
    	      $(dom).update(generatePurchaseFields(dom, 'co.uk')).setStyle({ background: '#dfd' });
    	    } else {
    	      $(dom).update('Not Available.').setStyle({ background: '#fdd' });
    	    }
    	  }
    	});
    				
    			}
    			
    			function generatePurchaseFields(dom) {
    			
    				new Ajax.Request('/control/?page=tldmaxyears&domain=' + dom, {
    					method: 'get',
    					asynchronous: false,
    	  				onSuccess: function(transport) {
    						window.maxyears = transport.headerJSON.years.maxterm;
    						window.minyears = transport.headerJSON.years.minterm;
    					}
    				});
    				var maxyears = window.maxyears;
    				var minyears = window.minyears;
    				
    				i=minyears;
    				
    				var rows = '';
    				console.debug(i + maxyears);
    				for (i=i;i<=maxyears;i++) {
    					console.debug('<option value="' + i + '">' + i + ' Year</option>');
    					rows += '<option value="' + i + '">' + i + ' Year</option>';
    				}
    				
    				var fields = '<input type="checkbox" value="' + dom + '" name="domain[]" />' +
    					'<select name="years">' +
    						rows +
    					'</select>';
    					return fields;
    			}

  4. #4
    Join Date
    Mar 2005
    Location
    Behind you...
    Posts
    873
    At this point I'm not sure I understand what issue you are having. If the problem is just to add logic to determine if years should be plural or singular, it is again just a simple if/else statement like I wrote initially or, using your new and more complete code, below:
    Code:
    			var maxyears;
    			var minyears;
    			var rows = '';
    
    for (var domain in window.domains) {
    					runme(window.domains[domain]);
    			}
    
    function runme(dom) {
    	new Ajax.Request('/control/checkdomain.php?domain=' + dom, {
    	  method: 'get',
    		asynchronous: true,
    	  
    	  onSuccess: function(transport) {
    	    if (transport.responseText.match(/1/)) {
    	      $(dom).update(generatePurchaseFields(dom, 'co.uk')).setStyle({ background: '#dfd' });
    	    } else {
    	      $(dom).update('Not Available.').setStyle({ background: '#fdd' });
    	    }
    	  }
    	});
    				
    			}
    			
    			function generatePurchaseFields(dom) {
    			
    				new Ajax.Request('/control/?page=tldmaxyears&domain=' + dom, {
    					method: 'get',
    					asynchronous: false,
    	  				onSuccess: function(transport) {
    						window.maxyears = transport.headerJSON.years.maxterm;
    						window.minyears = transport.headerJSON.years.minterm;
    					}
    				});
    				var maxyears = window.maxyears;
    				var minyears = window.minyears;
    
    				var rows = '';
    				for (var i = minyears; i <= maxyears; i++) {
    					if(i == 1) {
    					  rows += '<option value="' + i + '">' + i + ' Year</option>';
    					} else {
    					  rows += '<option value="' + i + '">' + i + ' Years</option>';
    					}
    				}
    				
    				var fields = '<input type="checkbox" value="' + dom + '" name="domain[]" />' +
    					'<select name="years">' +
    						rows +
    					'</select>';
    					return fields;
    			}
    Again, if I understood your problem then the simple addition of my if/else statement will allow the value of 1 to display as a singular year while the other values will show as plural years.
    "Given billions of tries, could a spilled bottle of ink ever fall into the words of Shakespeare?"

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles