我在使用以下代码创建的代码时遇到问题:
前两行指定我隐藏用户的字段。
我尝试做的下一件事是创建一个函数,如果StatusGroup字段设置为Distance ed,则将字段设置为特定值。
写入函数后,我希望每次更改StatusGroup时都调用它。
最后一行指定我希望在首次加载页面时调用autoSet()。
有关以下行为不起作用的任何见解?
$(document).ready(function() {
$('#deliveryinput').css("position", "absolute");
$('#deliveryinput').css("left", "-9999999");
var autoSet = function() {
if($('#StatusGroup').val() == 'Distance Ed') {
$('#DeliveryGroup').val( 'mail' );
$('#NVTGC').val('DIST'); }
else if($('#StatusGroup').val() != 'Distance Ed'){
$('#DeliveryGroup').val( 'pickup' );}
}
$('#StatusGroup').change(function() {
autoSet();
});
autoSet();
});
我认为你们已经将javascript命名为,但每当我更改StatusGroup时,相应的字段都不会响应。我使用正确的表单标识符吗?我将SelectId与其值距离Ed进行比较。对于DeliveryGroup和NVTGC也是如此。
<label for="StatusGroup">
<span class="field">
span class="<#ERROR name="ERRORStatus">"><b>Status</b></span>
</span>
select id="StatusGroup" name="StatusGroup" size="1" class="f-name" tabindex="4">
<option selected><#PARAM name="StatusGroup"></option>
<option value="Distance Ed">Distance Ed</option>
<option value="Fac/Research">Fac/Research</option>
<option value="Graduate">Graduate</option>
<option value="Undergraduate">Undergraduate</option>
<option value="Staff">Staff</option>
</select><br />
</label>
没关系!知道了,谢谢大家:)
答案 0 :(得分:4)
条件应为if($("#StatusGroup").val() == 'Distance Ed')
,否则您只是比较两个字符串而不是状态组值。
修正:
if($('#StatusGroup').val() == 'Distance Ed') {
//'DeliveryGroup' = 'mail';
// assumed you were trying to set the value for a field with id DeliveryGroup
$('#DeliveryGroup').val('mail');
$('#NVTGC').val('DIST');
} else if($('#StatusGroup').val() != 'Distance Ed'){
$('#DeliveryGroup').val('pickup');
}
答案 1 :(得分:2)
这些永远不会相等,因为它们是两个不同的字符串值:
if('#StatusGroup' == 'Distance Ed') {
我认为你正在寻找价值,所以这样做:
if($('#StatusGroup').val() == 'Distance Ed') {
......这些根本不起作用:
'DeliveryGroup' = 'mail';
'NVTGC' = 'DIST';
我认为你也想要那些选择器。只是不确定它们应该是什么。
$('DeliveryGroup').val( 'mail' ); // replace 'DeliveryGroup' with proper selector
$('NVTGC').val('DIST'); // replace 'NVTGC' with proper selector
val()
[docs]方法的两种用法是没有参数,它获取值。使用参数,它设置值。
答案 2 :(得分:2)
你的if
语句正在比较两个字符串,它们永远不会相等!我想你可能打算这样做:
if($('#StatusGroup').val() == 'Distance Ed')
使用id
“StatusGroup”获取元素的值。我还假设您不希望将字符串“mail”分配给字符串“DeliveryGroup”,因为这是不可能的。 “DeliveryGroup”是变量吗?在这种情况下,摆脱引号:
var DeliveryGroup //This line is somewhere else
DeliveryGroup = 'mail'; //Then you can do this in your if statement
至于你的代码的其他问题,你不需要在else
分支中再次测试条件 - 如果第一个条件失败,它将无论如何都会落到else
分支,那又为什么要再次考虑呢?
您还可以使用deliveryinput
隐藏$('#deliveryinput').hide()
元素,而不是更改CSS属性。
答案 3 :(得分:2)
在我的前任所说的旁边,你错过了你的autoSet函数的结束括号
答案 4 :(得分:0)
至少,您错过了选择器周围的$().val()
:if('#StatusGroup' == 'Distance Ed') {
应为if($('#StatusGroup').val() == 'Distance Ed') {
答案 5 :(得分:0)
var autoSet = function() {
if ('#StatusGroup' == 'Distance Ed') {
'DeliveryGroup' = 'mail';
'NVTGC' = 'DIST';
}
else if ('#StatusGroup' != 'Distance Ed'){
'DeliveryGroup' = 'pickup';
}
}
你的两个条件永远不会成立,所以这个函数没有任何反应。