2011-06-29 98 views
0

我在用下面的代碼我有一個形式的IM創造書面麻煩功能:問題產生的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與它的值Distance 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

爲什麼編輯完成?代碼現在甚至不會解析:( – 2011-06-29 20:23:50

+0

難道你不能只用$('#deliveryinput')。hide()而不是前兩行? –

+1

注意:你不必像函數一樣包裝函數(){autoSet();}',它只是'autoSet' –

回答

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'); 
    } 
+0

不固定。 ''DeliveryGroup'='郵件';'不起作用。 – user113716

+0

@patrix dw謝謝,我剛剛意識到。 – amosrivera

+0

更接近,但'$('#NVTGC')。val()='DIST';'不適用於賦值。 – user113716

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]方法的兩種用途是這樣的,不帶參數,它得到的值。有了一個參數,它就設定了這個值。

+1

嗯,不知道-1 ...哦,奇怪的SO故障? – 2011-06-29 20:25:11

+0

我不認爲這個'$('DeliveryGroup')'將工作除非他有一個DeliveryGroup標籤;) – amosrivera

+1

aahhh我seee「用適當的選擇器替換'DeliveryGroup'」 – amosrivera

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').hide()隱藏deliveryinput元素,而不是更改CSS屬性。

0

至少,你錯過了周圍的選擇了$().val()if('#StatusGroup' == 'Distance Ed') {應該if($('#StatusGroup').val() == 'Distance Ed') {

2

旁邊就是我的前輩說,你缺少你自動設置功能

+0

+1好。我完全錯過了! – user113716

0
var autoSet = function() { 
    if ('#StatusGroup' == 'Distance Ed') { 
     'DeliveryGroup' = 'mail'; 
     'NVTGC' = 'DIST'; 
    } 
    else if ('#StatusGroup' != 'Distance Ed'){ 
     'DeliveryGroup' = 'pickup'; 
    } 
} 

兩者的右括號你的條件永遠不會是真的,所以這個功能沒有任何反應。