【问题标题】:jquery alter submit on way to serverjquery alter submit on way to server
【发布时间】:2012-07-31 02:17:40
【问题描述】:

我在一个表单上有两个字段,两个都是输入框,页面加载时输入的值相同,一个是隐藏的。

当用户点击提交时,我想选中这些框,如果值没有不同,我想将可见框的值设置为“”(空字符串)。

这是我的代码(它在一组输入上进行迭代,但基本是我所描述的)

$(".edit_functional_area").submit(function() {        
    $(".value_shown").each(function(i, obj) {
        var hidden_obj = $(this).next();
        if (hidden_obj.val() == $(this).val() && $(this).val() != "") {
            alert($(this).val());

            $(this).val("");

            alert($(this).val());
        }
    });
});

从视觉上看,该字段实际上已被清空,但在服务器上,在我的控制器(这是在 rails 应用程序中)中,参数仍然设置为值。

我想要的是,该值在传入服务器的参数中为空白,因此我的模型在不需要时不会将值添加到数据库中。

有什么想法吗?

谢谢

【问题讨论】:

  • 也许return false;会阻止提交的发生;)
  • 我怀疑事件处理程序中的数据更改没有到达发送到服务器的数据。如果用 click 处理程序替换提交处理程序,该处理程序会更改数据,然后在完成时触发 submit 事件?
  • stackoverflow.com/users/10569/andrewdotnich - 我尝试了一段时间,似乎它可以让我到达那里,但最终的解决方案更接近我的旧代码。不过谢谢你的帮助。

标签: jquery ruby-on-rails ruby-on-rails-3.2


【解决方案1】:

终于搞定了。

删除了隐藏字段,因为我创建它的方式导致了 html 中的 ID 冲突。 相反,我在输入框中使用了一个数据属性来设置旧值并使用它在 jquery 中进行比较。

还必须更改更改元素值的命令以使用 attr(field, value) 而不是 val(value) 进行更改。

$(".edit_functional_area").submit(function(event) {
    $(".value_shown").each(function(i, obj) {
        var data = $(this).attr('data');
        if (parseFloat(data) == parseFloat($(this).val()) && $(this).val() != '') {
            $(this).attr('value', '');
        }
    });
});

感谢您的建议! 最大

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-26
    • 2012-05-20
    • 2022-12-26
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2022-12-01
    相关资源
    最近更新 更多