Javascript 下拉框选择是否禁用/禁用文本区域?
我正在使用Bootstrap3和HTML5创建一个web表单。表单中有一个部分,用户可以通过下拉框选择他的“交付方式”。这些值是:商店提货、联邦快递和Null。如果用户选择联邦快递,则应在标题为“配送地址”的文本区域中输入其邮寄地址。然而,如果他选择“Shop Pick Up”或“Null”,我们不需要他的邮寄地址,那么有没有办法使文本框静音或变灰,并且只有在他选择“FedEx”时才能将其写入 寻找如何处理此场景的想法 我的HTML:Javascript 下拉框选择是否禁用/禁用文本区域?,javascript,jquery,html,forms,twitter-bootstrap-3,Javascript,Jquery,Html,Forms,Twitter Bootstrap 3,我正在使用Bootstrap3和HTML5创建一个web表单。表单中有一个部分,用户可以通过下拉框选择他的“交付方式”。这些值是:商店提货、联邦快递和Null。如果用户选择联邦快递,则应在标题为“配送地址”的文本区域中输入其邮寄地址。然而,如果他选择“Shop Pick Up”或“Null”,我们不需要他的邮寄地址,那么有没有办法使文本框静音或变灰,并且只有在他选择“FedEx”时才能将其写入 寻找如何处理此场景的想法 我的HTML: <div class="col-xs-3"&g
<div class="col-xs-3">
<div class="form-group">
<label for="delivery">Method of delivery</label>
<select id="delivery" name="delivery" class="form-control input-lg" tabindex="17">
<option value="options" selected disabled>-Select-</option>
<option value="Shop Pick-Up">Shop Pick-Up</option>
<option value="FedEx">FedEx</option>
<option value="null">Null</option>
</select>
</div>
</div>
<div class="col-xs-4">
<div class="form-group">
<label for="shippingAddress">Shipping Address</label>
<textarea name="shippingAddress" class="form-control" rows="7" placeholder="" tabindex="18"></textarea>
</div>
交付方式
-挑选-
商店提货
联邦快递
无效的
送货地址
给
发货地址
元素一个id
(它应该有一个用于的标签)
然后,可以在选择框更改时设置禁用属性
$('#delivery').change(function(){
$('#shippingAddress').prop('disabled', !($(this).val() == "FedEx"));
});
您有一些处理非必填字段的选项。如果他们选择联邦快递,最简单的选择是将属性disabled
添加到文本区域
另一个选项是使用$.fn.hide()
和$.fn.show()
显然,您可以对这些解决方案进行扩展,使其更加优雅,但这将使您朝着正确的方向前进。您可以使用更改事件并根据所选的值更新文本框
$('#delivery').on('change', function(e){
if($(this).val() == 'FedEx')
$('#shippingAddress').prop('disabled', false);
else
$('#shippingAddress').prop('disabled', true);
});
textarea的disabled
属性可以在这里帮助您
但是展示和隐藏会更好
但是显示和隐藏会使表单抖动,所以应用一些动画来避免这种情况,或者使用这种方法,但是这种方法也有一些缺陷,因为用户不清楚何时可以输入地址
我更喜欢通过表演和隐藏,因为这很容易和信息
您尝试了什么??共享您的代码您可以在下拉列表中使用显示/隐藏文本区域。感谢您提供的简单解决方案!我尝试了第一个解决方案,但效果很好,因为选择了一个通用的“textarea”,它也恰好同时禁用了表单中的所有其他textarea。我必须给shipping'textarea'一个唯一的ID,对吗?谢谢,是的!向文本区域添加id应该可以解决您的问题。David,我实现了您的解决方案,然后发现它在现代浏览器中运行良好,但在IE8中禁用后,文本区域没有重新启用。你能确认IE8对你有效吗?我想如果你能得到一份IE8的话……看起来IE8不能使用:disabled
选择器。一个解决方法是应用类似的CSS格式并禁止键入。上面由“脚本shiva”发布的解决方案在IE7/8中对我很有效,它仍然使用“禁用”选择器。也许你的版本不起作用还有另一个原因。不过,谢谢你的帮助!这个版本适用于我所有的浏览器(IE7,IE8)。谢谢