jQuery HTML 表单处理

Posted

技术标签:

【中文标题】jQuery HTML 表单处理【英文标题】:jQuery HTML form processing 【发布时间】:2016-03-08 09:21:14 【问题描述】:

当一个人从一个选择中选择一个选项时,是否有任何其他方式来处理表单,它会更改其他选择中的结果。否则 Safari 浏览器不会执行我的代码。

这里是 jQuery 代码:

$(document).ready(function()


    $('select[name=nm_field_3]').click(function()
        var other_options = $('select[name=nm_field_4] option[value="120cm"]');
        var selected_option = $('select[name=nm_field_3] option:selected');
        if(selected_option.text() == 'Brown')
        
            other_options.hide();
        

        else
        
            other_options.show();
        
    );

);

这里 js 小提琴:http://jsfiddle.net/aq710agd/2/

我的意思是这可行,但并非所有浏览器都支持它。这就是我寻找正确方法的原因。

感谢您的帮助:)

【问题讨论】:

更新这个Demo,让我们了解你想要做什么 您无法从select 中隐藏options。您可以在某些浏览器中使用,但不能在 Chrome 或 IE 中使用。您需要 remove() 选项,然后在需要时将它们添加回来:请参见此处:***.com/questions/1271503/… 【参考方案1】:

您需要在“第一个”选择时收听更改事件, 并更新“秒”上的选项。

工作示例:

var other_select = $('select[name=nm_field_4]');
var other_options = $('select[name=nm_field_4] option[value="120cm"]');
//Listen to change event on the 'first' select
$('select[name=nm_field_3]').change(function () 
    //Getting the selected value after the change
    var currentValue = $(this).val();
    //Then do your logic
    if (currentValue === "Brown") 
        other_options.detach();
     else 
        other_select.append(other_options);
    

);

【讨论】:

您看到的问题是 safari 不支持 .show 和 .hide 以及 Internet Explorer。有没有其他办法?

以上是关于jQuery HTML 表单处理的主要内容,如果未能解决你的问题,请参考以下文章

jQuery:表单提交 - 多个事件处理程序

jquery attr处理checkbox / select 等表单元素时的坑

使用Javascript / jQuery进行Bootstrap 4表单验证

处理来自 jquery 表单的结果

jQuery form插件的使用--用 formData 参数校验表单,验证后提交(简单验证).

使用 .submit() 事件处理程序通过 JQuery 循环表单字段