Передача переменной через jquery.load работает при загрузке страницы, но не при изменении поля формы .. (Использование ColdFusion 8) - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть форма, которая извлекает одно из полей выбора из внешнего документа (используя ColdFusion)

При загрузке основного документа cfm я запускаю следующий jquery:

 <cfoutput>
    $("div##repDiv").load("inc/incFormFields.cfm ##RepIDDiv",{clientID:"#form.bid_ClientID#",selectedList:"#replist#"});</cfoutput>

Это прекрасно работает при загрузке страницы - он отправляет правильный идентификатор клиента и selectedList в соответствующую часть документа и загружает его.Файл incFormFields.cfm содержит следующий раздел, который возвращает поле выбора:

<div id="RepIDDiv">
<cfparam name="clientID" default="defaultClientID">
<cfparam name="selectedList" default="defaultRepID">


<cfset clientReps = application.clientService.getRepsByClientID(clientID)>
<label for="rep_ID">Client Rep(s)</label>           
<cftry>
            <select name="rep_ID" id="rep_ID" multiple="multiple" size="5">
                <option value=""> - - - </option>
                <cfoutput query="clientReps">
                    <option value="#rep_ID#" <cfif listfind(selectedList,rep_ID)>selected="selected"</cfif><cfif rep_Active NEQ true>style="color:##cecece"</cfif>>#rep_FirstName# #rep_LastName# (#rep_JobTitle#) </option>
                </cfoutput>
            </select>       
</div>

Так что я ЗНАЮ, что весь процесс работает в кодированном виде - потому что страница загружается правильно, и мы идем.

Однако у меня также есть следующий код для перезагрузки страницы incFormFields.cfm:

<cfoutput>
$('##client_ID').change(function() {
        var tmpID = $(this).val();
        alert($(this).val())
        $("div##repDiv").load("inc/incFormFields.cfm ##RepIDDiv",{clientID:$(this).val(),selectedList:"#replist#"});
    }); 
</cfoutput>

Теперь, на первый взгляд, это должно работать.Первое, что он делает, это создает предупреждение со значением выбранного поля формы - это предупреждение показывает мне ПРАВИЛЬНОЕ выбранное поле выбора.Однако это же значение НЕ передается в документ incFormFields.cfm надлежащим образом (я думаю, что это вовсе не так)

Если я сбрасываю значение или clientID во включенном файле - это всегда "defaultClientID".

Так что вопрос - почему это работает при загрузке страницы - но НЕ onChange ()?

Я в тупике.Спасибо и Боже, благослови!Chris

Ответы [ 3 ]

0 голосов
/ 29 апреля 2011

Вот что я сделал вместо этого ... Я использовал .get, а не .load и удалил вызов ID, поскольку .get не позволит мне загрузить только часть страницы ....

$('##client_ID').change(function() {
$.get("inc/incFormFields.cfm ##RepIDDiv",{clientID:$(this).val(),selectedReps:"#replist#", selectedLoc:"#form.bid_Location#"},
function(data){
$("div##repDiv").html(data);}
);
});

Примечание: я редактировал переменные во время воспроизведения б / к, которые я должен был предоставить, чтобы выбрать полевые выходы.Так что selectedList стал selectedReps и мне пришлось добавить selectedLoc

Спасибо за помощь всем.Теперь я опубликую новый вопрос о том, как я могу загрузить внешний файл в модальном диалоговом окне jquery:)

Будьте благословенны!Крис

0 голосов
/ 18 августа 2012

Если вы собираетесь использовать get вместо load, вы все равно можете удалить html, попробуйте это:

$('##client_ID').change(function() {
$.get("inc/incFormFields.cfm ##RepIDDiv",{clientID:$(this).val(),selectedReps:"#replist#", selectedLoc:"#form.bid_Location#"},
function(data){
$("div##repDiv").html($(data).find('##RepIDDiv'));}
);
});
0 голосов
/ 29 апреля 2011

this указатель context-dependent. Во втором фрагменте $(this) относится к container = $("div##repDiv"), просто обратитесь к вашей переменной tmpID вместо $(this).val():

$('##client_ID').change(function() {
    var tmpID = $(this).val();
    $("div##repDiv").load("inc/incFormFields.cfm ##RepIDDiv",{clientID:tmpID,selectedList:"#replist#"});
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...