2013-01-24 20 views
1

好吧,我比較webform上的2個值,一個是文本值,另一個是選擇元素。當文本值小於下拉列表時,我需要將下拉列表更改爲低於文本框中的最大值。使用Javascript替換選擇框中的金額

例如,如果用戶在下拉列表中選擇2000,然後在文本字段中輸入1100,我需要彈出返回說1000

我寫的東西,我認爲會的工作開始,但我不知道是否應該使用與下拉字段名稱相關的返回命令,或者類似字段名稱(彈出窗口)的文本數量是<。

這是我到目前爲止。如果有人能夠指引我正確的方向,我會非常感激。

function compareAmts() { 
    if ($("#TCA_Field1").val() < ("#TCA_Field2").val) { 
     ($("#TCA_Field2").val() == 
     ); 
    } 
} 
+1

什麼是彈出? – epascarello

+0

對不起,我的意思是一個下拉菜單。今天生病了。 –

+0

if塊內的東西對我來說沒有多大意義。如果一個比另一個少,你想要發生什麼?此外,不應該'(「#TCA_Field2」)。val'是'$(「#TCA_Field2」)。val()'? –

回答

2

我會建議使用普通的JavaScript來遍歷選項,並選擇一個適當的:

function adjustMaxDropdownValue($dropdown, $input) 
{ 
    var element = $dropdown.get(0), 
    options = element.options, 
    i = element.selectedIndex, 
    atMost = +$input.val(); // cast to number 

    while (i >= 0 && options[i].value >= atMost) { 
     --i; 
    } 

    element.selectedIndex = i; 
} 

這假定您的下拉值是有序的,從低到高。

要撥打:

adjustMaxDropdownValue($("#TCA_Field1"), $("#TCA_Field2")); 
+0

我認爲將所有選項值拉到數組可能更有效率,使用排序,然後遍歷它以找到比'atMost'更小的最高值。將保存週期相比,每次減少1個單位,尤其是如果你有像1000這樣的大步驟。 –

+0

@Asad所有的選項* *在一個數組中,''選項'陣列:) –

+0

Nvm,我沒有看代碼仔細。 –

0
//Functions 


function compareAmts($FIELDSwitchText, $FIELDSwitchPull) 
{ 
var SwitchAdv = 0; 
temp = $("#FIELD_SwitchPull").val(); 
var SwitchComm = parseInt(temp.replace(/\,/g,'')); 

if($("#FIELD_SwitchText").val()!=""){ 
    SwitchAdv = parseInt($("#FIELD_SwitchText").val()); 
} 


var element = $FIELDSwitchText.get(0), 
options = element.options, 
i = element.selectedIndex, 
atMost = +$FIELDSwitchPull.val(); // cast to number 

while (i >= 0 && options[i].value >= atMost) { 
    --i; 
} 

element.selectedIndex = i; 

}

+0

我正在嘗試這個,但是當我在調試代碼時沒有收到錯誤時,我通過Var元素部分運行後遇到了Jquery方法。任何想法爲什麼會發生? –