Tag: javascript
Append value to multiselect with jquery
by admin on Aug.12, 2010, under Programming
This is a simple function to append values to a multiselect. In the comments you’ll find the explanation of each command.
function appendMulti(value,target){
//Get old values from multiselect (they are an array)
oldvalues= $(target).val();
//We need to check if the multiselect is empty
if(oldvalues){
//It's not empty
//Find the lenght of the array, the beauty of this is that since arrays starts from 0, this number will always be the next available slot
key = value.length;
} else {
//It's empty
//Initialize a new array and set the key to the first element
var oldvalues = [];
key = 0;
}
//Append new value to the array
oldvalues[key] = value;
//Set the new values
$(target).val(oldvalues);
return true;
}
You can call the function like this:
appendMulti('value','#multiselect');
Ajax calls vs MSSql
by admin on Jun.29, 2010, under Programming
Please note that this article can be applied to any non utf-8 encoding.
I recently needed to send data using ajax to an MSSql 2000 database (which requires windows-1252).
As you may know javascript sends data encoded in utf-8 (utf-16 to be more precise), this must be accepted as a fact thus making the use of a php function to convert the encoding before sending to the database. Here is the snippet I use:
function convertor($array){
if (is_array($array) && count($array) > 0){
foreach ($array as $k => $v){
$return[$k] = mb_convert_encoding($v, "iso-8859-1","UTF-8");
}
} elseif (!empty($array)) {
$return = mb_convert_encoding($array, "iso-8859-1","UTF-8");
} else {
return false;
}
return $return;
}
Basically what it does is to check if we have an array or a single value then proceed to convert it to the desired encoding (in my case iso-8859-1), after converting the values these can be safely stored into the database.
I have also to add that I’ve encountered some jquery plugins that messes with the encoding of the strings. To be on the safe side you may use this line:
unescape(encodeURIComponent(string))
jquery-ui dialog with ajax how to avoid a common error
by admin on May.31, 2010, under Programming
I’ve made this post because I got asked why this snippet gave problems:
$.ajax({
type: "POST", url: "somepage.php",
success: function(html){$("#someDiv").html(html).dialog();}
});
The problem with this code is that it creates a new instance of dialog each time, basically adding a new dialog div in the html for each call.
Aside from being unable to reopen the dialog after closing it, your are replicating your ajax code several times across the webpage creating all sort of problems with the jquery selectors.
The jquery-ui docs do not expalin well this issue, so to avoid headache here is the correct code:
$(function() {
$("#someDiv").dialog({ autoOpen: false });
});
then in the ajax call:
$.ajax({
type: "POST", url: "somepage.php",
success: function(html){$("#someDiv").html(html).dialog('open');}
});