2012-07-16 216 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(); 
    } 

});