2012-07-16 215 views
0

我有一個HTML表單 - 在一個文本字段像顯示或隱藏表單元素

<input type = "text" name = "age" value = "" id = "txt_age"> 

在年齡的價值,我必須表現出這樣的元素 -

<select name = "married"> 
    <option value = "Yes">Yes</option> 
    <option value ="No">No</option> 
</select> 

如果年齡> 18,然後結婚字段將顯示形式,否則隱藏它。這個年齡> 18條件存儲在數據庫中。隨着時間的變化,已婚字段切換(顯示/隱藏)。我如何使用javascript/jquery.Please建議。

欲瞭解更多信息,所有這些領域動態genereo.So我想增加onchange =「somefuction(條件);」隨着年齡的增長而創建的時候查找的字段在條件滿足時顯示,也在DB中。

OR

一個解決辦法我認爲 -
在這種情況下,結婚會找年齡changes.Then因此結婚會隱藏/顯示itself.But問題值的字段是怎麼結婚的年齡觀測場或者調用javascript函數。
對不起,沒有解釋完整的問題。

+0

呼叫一個**服務器端**(如果你需要在服務器端的計算,因爲這個條件被存儲在DB)方法txt_age的變化事件(其實這是很難以捉摸,焦點可能會更好)張貼年齡。返回值可能是一個布爾值,表示是否啓用了「已婚」(也添加了一個ID)。一個更好的解決方案(因爲我猜你的UI可能比這更復雜)可能在每次更改時包含完整表單的數據帖子,並且返回值可能是一個字典,其中每個鍵都是元素的ID和一些值以指示是否它已啓用並可見。 – 2012-07-16 11:39:50

+0

如果只有閾值在數據庫上(18,在這種情況下,因爲不同國家的法律可能不同),您可以簡單地使用隱藏字段(填充來自數據庫的值)作爲比較操作數(或者甚至是簡單的替換在服務器端的JavaScript代碼)。 – 2012-07-16 11:43:22

+0

嗨阿德里亞諾你能解釋一下你想說什麼嗎?這對我有幫助。 – 2012-07-16 11:45:28

回答

1

add id =「已婚」選擇並使用類似的東西。

$("#txt_age").blur(function() { 
    if(parseInt($(this).val() > 18) { 
     $("#married").show(); 
    } else { 
     $("#married").hide(); 
    } 
}); 
+0

你好,小問題,看看下面我的代碼:它不是'id'它是給予'了'name'屬性:)' – 2012-07-16 11:42:47

+0

我注意到,在答案。使用名稱會讓OP更容易在頁面上具有多個具有相同名稱的元素。最好只切換到一個ID。 – 2012-07-16 11:47:11

+0

對不起,但我不會找這個。 – 2012-07-16 11:48:12

0

更新:我從來沒有在紅寶石軌道上工作。但我認爲你可以從數據庫獲取值並在隱藏字段中設置該值。

一旦hiddenfield值設置改變了jQuery,

$(document).ready(function(){ 
$("#txt_age").focusout(function() 
{ 
if(parseInt($("#txt_age").val())>parseInt($("#hiddenfield_id").val())) 
{ 
$("#married").show(); 
} 
else 
{ 
$("#married").hide(); 
} 
}); 
}); 

不要忘記修改<select name = "married"> to <select name = "married" id = "married">

+0

Hiya,小問題,看看我的代碼如下:它不是'id'它是給出的'name'屬性。 'B-)' – 2012-07-16 11:43:03

+0

是的,我只是注意到並更新它。 – Matt 2012-07-16 11:43:29

+0

請使用它像<選擇name =「嫁」 ID =「嫁」> – Matt 2012-07-16 11:43:59

0

試試這個&注

  • 避免ID = 「txt_age」 之間的空間

其餘這應該幫助:

var $foo = $('select[name="married"]'); 
$foo.hide(); // in start always hide 

$('#txt_age').on('blur', function() { 
    if(parseInt(this.value)>18){ 
     $foo.hide(); 
    } else { 
     $foo.show(); 
    } 

});