javascript - 使用Jquery动态添加不同形式的字段

标签 javascript jquery ruby-on-rails-3 forms dry

我想要一个一开始不显示的字段,但如果用户决定向其中输入内容,那么它将出现在表单中。

我可以使用 Jquery 并执行类似的操作

$('input[example]')
    .bind('click', function() {
        $('#clickfield')
            .append('<input id="new_field" name="MODEL[new_field]" size="30" type="text">');

但是,我想针对不同的型号以几种不同的形式添加此字段。 由于模型名称位于字段中,我将如何将 Jquery 脚本编写为模块化,以便我可以对所有表单使用相同的脚本?

最佳答案

一种解决方案是使用您想要的名称作为输入参数创建一个函数:

addInput(form, id, modelName) {
    $(form).append(
             '<input id="'+id+'" name="'+modelName+'['+id+']" size="30" type="text">'
            );
}

其中 form 是字段的选择器(在示例中是 '#clickfield'),id 是字段的 ID新的输入字段,modelName 将是您提到的模型的名称。

其他解决方案,假设'input[example]'选择了某个按钮或可点击区域,触发显示字段的事件;和 '#clickfield' 是一些 divspan 或一些您将显示字段的区域,用于从服务器加载这些隐藏字段,样式为 display:none,带有助记符类,因此您可以执行类似定义函数之类的操作:

showField(clickable, class) {
    $(clickable).click(
        function(){
            $(class).show();
        }
    );
}

然后:

$(document).ready(
    showField('input[example1]', '.class1');
    showField('input[example2]', '.class2');
    showField('input[example3]', '.class3');
    //              .
    //              .
    //              .
    // One line for every clickable area that triggers
    // the event of showing a field, and the class of the
    // field to show
);

这样您就可以添加一些用户友好的功能,例如使用 fadeIn() Jquery 函数(而不是 show())淡入字段,或任何其他动画出现时。

希望您能使用它!祝你好运!

关于javascript - 使用Jquery动态添加不同形式的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365693/

相关文章:

javascript - 数据表无法重新初始化数据表

jquery - 在 $.each() 中打乱多个数组

ruby-on-rails - 无法在 Rails 3 集成测试中测试签名的 cookie

ruby-on-rails - 如何从 Rails 应用程序中的引擎提供图像资源

javascript - 无法将段落的值设置为新变量

javascript - 多列 HTML 列表,第一列中有一定数量的元素?

javascript - 简单的javascript函数

jquery - 不工作 : remove style attribute or change width\height css property via jquery in IE6\IE7\IE8

javascript - 使用 jQuery/JavaScript 获取带有 float li 的 ul 宽度

mysql - Rails:minitest是否使用schema.rb重新创建测试模式?