Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下拉框选择是否禁用/禁用文本区域?_Javascript_Jquery_Html_Forms_Twitter Bootstrap 3 - Fatal编程技术网

Javascript 下拉框选择是否禁用/禁用文本区域?

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

我正在使用Bootstrap3和HTML5创建一个web表单。表单中有一个部分,用户可以通过下拉框选择他的“交付方式”。这些值是:商店提货、联邦快递和Null。如果用户选择联邦快递,则应在标题为“配送地址”的文本区域中输入其邮寄地址。然而,如果他选择“Shop Pick Up”或“Null”,我们不需要他的邮寄地址,那么有没有办法使文本框静音或变灰,并且只有在他选择“FedEx”时才能将其写入

寻找如何处理此场景的想法

我的HTML:

    <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)。谢谢