Jquery Internet Explorer 6和8 onchange不工作
我试图使用选择框的onchange方法填充表单上的一些字段Jquery Internet Explorer 6和8 onchange不工作,jquery,internet-explorer-8,internet-explorer-6,onchange,Jquery,Internet Explorer 8,Internet Explorer 6,Onchange,我试图使用选择框的onchange方法填充表单上的一些字段 <tr> <td align="left"><label>*Select Branch:</label></td> <td><form:select tabindex="5" path="userInputBranch" onchange="setProcessorBranchLocationOn
<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>
}
如您所见,我正在尝试使用所选下拉列表值的子字符串值填充隐藏字段autoUserInputProcessor、Company、Location
这在Chrome和IE7中运行良好。我没有得到关于IE6和IE8中隐藏字段的任何更新。我正在使用spring的标记库生成表单。任何帮助都将不胜感激。如果您需要任何其他信息,请告诉我
我将jQuery 1.61.min.js与jQuery表单2.4和jQuery UI 1.8一起使用
下面是Spring生成的select中的一些示例数据
这是一种选择。我无法控制值的格式,它与我收到的值一样
<option value="06-04-22-id=2504">Oneonta, NY</option>
试试看?它可能会为您处理一些浏览器的怪癖
$('.selectorForTheSelect').change(setProcessorBranchLocationOnChange);
不要忘记删除HTML中select的onchange属性。首先,userInputBranch不是元素的id 其次,使用jQuery的.val函数,而不是attr'value';
既然您已经在使用jquery,使用.change事件。我从未见过有人这样编写HTML。你应该确保IE6是一个真正的需求-没有人再使用它了IE6是一个需求。不幸的是:在Spring中使用path变量时,userInputBranch被设置为id。当我将函数调用传递给change函数时,我需要指定空参数?我只是想知道,因为我做了你做的事,但没有成功。好吧,我按照你说的做了,有点成功了。如果我将函数调用放在change方法中,它将不起作用。如果我将函数放在change方法中,它确实会工作。。。像这样。$'userInputBranch'.changefunction{var rawBranch=$'userInputBranch'.attr'value'.split'-';$'autoUserInputProcessor.attr'value',rawBranch[0];$'autoUserInputCompany.attr'value',rawBranch[1];$'autoUserInputLocation.attr'value',rawBranch[2];ifrawBranch[3]!=null{var cBranch=rawBranch[3]。拆分“=”;$”userInputBranch.attr'value',cBranch[1];}警报$”autoUserInputProcessor.val;};关于如何让它以另一种方式工作,或者为什么它不能以另一种方式工作,有什么想法吗?这可能是一个范围问题。setProcessorBranchLocationOnChange是一个全局函数,还是在一个对象中定义的?如果你在这个问题中发布了所有的JS,那么在我看来它看起来是全局的,在这种情况下它应该工作。它不使用这个,所以它不会被忽略您是否尝试过在Firebug或Chrome的开发工具中插入断点并逐步执行?
<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">
//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();
});
$('.selectorForTheSelect').change(setProcessorBranchLocationOnChange);