Internet Explorer 6 и 8 onchange не работают - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь заполнить некоторые поля формы, используя метод onchange поля выбора.

<tr>
                <td align="left"><label>*Select Branch:</label></td>
                <td><form:select tabindex="5" path="userInputBranch" onchange="setProcessorBranchLocationOnChange()">
                        <form:option value="--" label="--" />
                        <form:options items="${ customerAddEntity.selectionContentsBranch}" itemLabel="key" itemValue="value" />
                    </form:select> 
                    <form:hidden path="autoUserInputProcessor" /> 
                    <form:hidden path="autoUserInputCompany" /> 
                    <form:hidden path="autoUserInputLocation" />
                </td>
            </tr>

Функция Javascript:

function setProcessorBranchLocationOnChange() {
var rawBranch = $('#userInputBranch').attr('value').split('-');
    $('#autoUserInputProcessor').attr('value', rawBranch[0]);
    $('#autoUserInputCompany').attr('value', rawBranch[1]);
    $('#autoUserInputLocation').attr('value', rawBranch[2]);
    if(rawBranch[3]!=null){
        var cBranch = rawBranch[3].split('=');
        $('#userInputBranch').attr('value', cBranch[1]);
    }

}

Как вы видите, я пытаюсь заполнить скрытые поля autoUserInputProcessor, Company, Location значением subString выбранного выпадающего значения.

Это прекрасно работает в Chrome и IE7.Я не получаю никаких обновлений по скрытым полям в IE6 и IE8.Я использую весенний тег lib для генерации формы.Любая помощь будет принята с благодарностью.Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Я использую jQuery 1.61.min.js с jQuery форм 2.4 и jQuery UI 1.8.

Вот некоторые примеры данных из выбора,генерируется Spring.

Это один из вариантов.(У меня нет контроля над форматом значения, оно такое, какое я получил.)

    <option value="06-04-22-id=2504">Oneonta, NY</option>

Это пример заполнения полей.

<input id="autoUserInputProcessor" name="autoUserInputProcessor" type="hidden" value="06">
<input id="autoUserInputCompany" name="autoUserInputCompany" type="hidden" value="04">
<input id="autoUserInputLocation" name="autoUserInputLocation" type="hidden" value="22">

Это мойполный файл JavaScript, который загружается при загрузке страницы:

    //window.onbeforeunload = confirmExit;

    function setProcessorBranchLocationOnChange() {
    var rawBranch = $('#userInputBranch').attr('value').split('-');
    $('#autoUserInputProcessor').attr('value', rawBranch[0]);
    $('#autoUserInputCompany').attr('value', rawBranch[1]);
    $('#autoUserInputLocation').attr('value', rawBranch[2]);
    if(rawBranch[3]!=null){
        var cBranch = rawBranch[3].split('=');
        $('#userInputBranch').attr('value', cBranch[1]);
    }

    }

$(function() {
// Set tab indicies that aren't available until load.
$('#customersearchanchor').attr('tabIndex', 120);
$('#logoutLink').attr('tabIndex', 125);

// Set the processor, company, location
// hidden fields on branch select change

setProcessorBranchLocationOnChange();

});

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Во-первых, userInputBranch не является идентификатором элемента Во-вторых, используйте функцию jQuery .val() вместо attr) 'value'); А поскольку вы уже используете jquery, используйте событие .change().

0 голосов
/ 28 июня 2011

Попробуйте Функция изменения jQuery ?Скорее всего, он будет обрабатывать некоторые особенности браузера.

$('.selectorForTheSelect').change(setProcessorBranchLocationOnChange);

Не забудьте удалить атрибут onchange элемента select в HTML.

...