Category Archive:

Cloning an array with JavaScript

0

I had a need to clone an array with JavaScript. There appears to be a number of different ways to do it, including writing your own function. All of these solutions below will just create a reference to the original array:

var newArray = myArray.slice(0);
var newArray = myArray.concat([]);
var newArray = clone(myArray);

A popular answer using jQuery is the following:

var newArray = jQuery.extend(true, {}, myArray);

However, this solution will return an object and you cannot get the length of an object like you can an array.

To return an array, we change the curly braces to square brackets like so:

var newArray = jQuery.extend(true, [], myArray);

This is the solution that works.

Posted in: Development, JavaScript

Continue Reading

How to use date on google scatter chart

1

The google visualization api limits you to using numeric values for both the X and Y axis, but there is a trick you can do with the google image chart api to covert the value to a date as below. Use JavaScript’s Date() object for the conversion. It would be nice if we could just specify the column as a string like data.addColumn(‘string’, ‘Date’), but the chart still will not accept the string. It will accept a date object though. The next task is to format the date string, it appears google accounts for with the google.visualization.DateFormat method, but it does not work. In the end, I had to accept the formatting provided by the chart of “15 Nov 2011″ as the format for a “datetime” column, which looked better than the format displayed for a “date” column.

    var data = new google.visualization.DataTable();
    data.addColumn('datetime', 'Date');
    data.addColumn('number', 'Quantity');
    data.addRow([new Date(2011, 0, 1), 10])
    data.addRow([new Date(2011, 1, 1), 15])
    data.addRow([new Date(2011, 2, 1), 12])
    data.addRow([new Date(2011, 3, 1), 18])
    data.addRow([new Date(2011, 4, 1), 17])
    data.addRow([new Date(2011, 5, 1), 19])
    data.addRow([new Date(2011, 6, 1), 25])
    data.addRow([new Date(2011, 7, 1), 18])
    data.addRow([new Date(2011, 8, 1), 24])
    data.addRow([new Date(2011, 9, 1), 28])
    data.addRow([new Date(2011, 10, 1), 27])
    data.addRow([new Date(2011, 11, 1), 34])
 
 
    // Create and draw the visualization.
    var chart = new google.visualization.ScatterChart(
        document.getElementById('chart'));
    chart.draw(data, {title: 'Test',
                      width: 600, height: 400,
                      vAxis: {title: "cr"},
                      hAxis: {title: "time"}
                      }
              );
Posted in: JavaScript

Continue Reading

Reset button doesn’t work on selected=”selected” form element

0

Using Zend_Form, it generated a select element where the selection option had an attribute of selected=”selected” instead of just adding “selected” to the element. The form’s reset button no longer works on this element. Because it’s being generated, I can’t simply change how the attribute is specified in the element, so I used some JavaScript to reset all the form elements when a reset button is clicked. If you have multiple forms and multiple reset buttons, then you’ll need to modify this to point at a specific form’s elements rather than all on a page.

 $("input:reset").click(function(event) {
	 event.preventDefault();
 
	// Whitelist of fields to minimize unintended side effects.
	$(':text, :password, :file, SELECT', 'form').val('');
 
	// De-select any checkboxes, radios and drop-down menus
	$(':input').removeAttr('checked').removeAttr('selected');
	$("select").find('option').removeAttr("selected");
 });
Posted in: Development, JavaScript

Continue Reading

Scriptaculous Ajax.autocompleter stop preselect of first option item

0

I have this search feature on the search input of my sites, but was annoyed when I’d hit the enter button the keyboard to submit the search after the autocomplete items were visible. Instead of submitting the form as I desired, the first autocomplete option was entered into the input and then the form was submitted.

To disable the pre selection of the first result item in the autocomplete, do the following:

In controls.js of the Scriptaculous library, on line 286: change “this.index = 0;” to “this.index = -1;”

Posted in: JavaScript
Tags:

Continue Reading

Prototype element insert example

1

If you’re like me, you found the documentation on prototype’s insert method lacking much needed documentation http://www.prototypejs.org/api/element/insert . They say the format is like

insert(element, { position: content }) -> HTMLElement

What the heck does that mean? Obviously you can’t just paste it in because it’ll cause a JavaScript error. After some googling and trial and error, I have the code working and will provide it as an example. The code create a div with content and places it at the bottom of an existing page element.

//create new div
var myDiv = new Element( 'div' );
 
//put product name in the new div
myDiv.update('text inside the div');
 
//append div to page element
Element.insert($('pageElement'), {'bottom':myDiv} );
Posted in: JavaScript

Continue Reading