使用javascript创建函数的问题

时间:2011-06-29 20:20:23

标签: javascript

我在使用以下代码创建的代码时遇到问题:

前两行指定我隐藏用户的字段。

我尝试做的下一件事是创建一个函数,如果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>

没关系!知道了,谢谢大家:)

6 个答案:

答案 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'; 
    }
}

你的两个条件永远不会成立,所以这个函数没有任何反应。