2014-04-14 32 views
0

想知道如何將複選框的選中狀態鏈接到從sql查詢返回的文本字段上的值。用戶從表單上的選擇/菜單中選擇一個值後,文本框值會更新。選擇菜單選項的值用作查詢中的過濾器,該過濾器工作正常。將複選框的選中狀態鏈接到文本框的值

if ($('#textbox').val("TRUE") 
    { $('#mycheckbox').prop('checked',true);} 
else 
    { 
    $('#mycheckbox').prop('checked',false); 
    } 

問題是if語句適用於用戶選擇的以前的值。因此,即使文本框的值是最新的,它總是一次點擊。雖然文本框的值在表單上是當前的,但當我使警告框顯示文本框的值時,它也落後了。所以if語句沒問題,它只是使用文本框的前一個值而不是當前的值。任何方式使目前?

+1

確保您的AJAX調用成功後,代碼塊正在執行。 –

+0

當您更新** textbox ** – xiidea

回答

0

首先,你的代碼中有語法錯誤,假設是一個錯字。

什麼你被$('#textbox').val("TRUE")做的是文本框的值設置TRUE

因此,無論何時您的代碼塊將執行,您將最終檢查複選框,並帶有TRUE值的文本框。

如果您的目標是根據文本框的值更新複選框。當你實際設置/更新文本框的值時,你可以使用下面的一行代碼而不是四行代碼。

$( '#mycheckbox')。支撐( '檢查',$( '#文本框')。VAL()== 「TRUE」)

更新

至於你提到你是一個Ajax調用後設置新的價值,並沒有包含在您的代碼示例,我猜,你的代碼是一樣的東西:

$.ajax({ 
    url: "your/url" 
}).done(function(data) { 
    $('#textbox').val(data) 
}); 

如果是這樣,更新您的合作de到

$.ajax({ 
    url: "your/url" 
}).done(function(data) { 
    $('#textbox').val(data); 
    $('#mycheckbox').prop('checked',$('#textbox').val() == "TRUE"); 
}); 

響應基於猜測。

+0

它仍然根據之前選擇的值檢查框。它的一個用戶選擇在後面。 – user3527363

+0

我問你在哪裏設置/更新文本框的值? – xiidea

+0

@ user3527363:請清除一件事,**「其一個用戶選擇在後面」**您的代碼不包含您的選擇機制的一部分! – xiidea

0

您的if陳述未測試#textbox的值,它實際上正在設置一個值。

試着改變你的if聲明如下:

if ($('#textbox').val() == "TRUE") 

這裏的另一個SO post可能的幫助。

+0

==的值時,添加代碼塊不起作用,它仍然使用之前的用戶選擇,而不是當前的用戶選擇。 – user3527363