<!DOCTYPE html PUBLIC "- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Dynamic Form Population With jQuery</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
function PopulateFields( strValue1, strValue2 ){
$( "#field2" ).val( strValue1 );
$( "#field3" ).val( strValue2 );
}
function GetAJAXValues( strOption, fnCallback ){
if (GetAJAXValues.Xhr){
GetAJAXValues.Xhr.abort();
}
GetAJAXValues.Xhr = $.ajax({
type: "post",
url: "./dynamic_form_population_data.cfm",
data: {
option: strOption
},
dataType: "json",
success: function( objData ){
fnCallback({
Value1: objData.VALUE1,
Value2: objData.VALUE2
});
},
error: function(){
alert( "An error occurred" );
},
complete: function(){
GetAJAXValues.Xhr = null;
}
});
}
function GetStaticValues( strOption ){
if (strOption == "opt1"){
return({
Value1: "Value 1 - Field 1",
Value2: "Value 1 - Field 2"
});
} else if (strOption == "opt2"){
return({
Value1: "Value 2 - Field 1",
Value2: "Value 2 - Field 2"
});
} else {
return({
Value1: "",
Value2: ""
});
}
}
function UpdateFormFields(){
var jSelect = $( "#field1" );
var jAJAX = $( "#ajax" );
var objData = null;
if (jAJAX.is( ":checked" )){
GetAJAXValues(
jSelect.val(),
function( objRemoteData ){
PopulateFields(
objRemoteData.Value1,
objRemoteData.Value2
);
}
);
} else {
objData = GetStaticValues( jSelect.val() );
PopulateFields( objData.Value1, objData.Value2 );
}
}
$(function(){
var jSelect = $( "#field1" );
jSelect.change( UpdateFormFields );
});
</script>
</head>
<body>
<h1>
Dynamic Form Population With jQuery
</h1>
<form>
<p>
<select id="field1">
<option value="">- - Select - -</option>
<option value="opt1">Option 1</option>
<option value="opt2">Option 2</option>
</select>
</p>
<p>
<input type="text" id="field2" size="50" />
</p>
<p>
<input type="text" id="field3" size="50" />
</p>
<p>
<label>
<input type="checkbox" id="ajax" />
Use Ajax To Gather Data
</label>
</p>
</form>
</body>
</html>