提交禁用字段

Nic*_*ina 32 html jquery webforms

我知道Web表单定义的行为是不提交禁用的字段......但这不是我想要的定义.我想使用ajax发布表单,我想让它获取所有字段,即使它们被禁用.我不想构建一个解决方法,我将字段"看起来禁用"...或者必须在我启用字段的地方进行破解 - > post - > disable.

是否有可能使ajaxSubmit()或serialize()抓住禁用的字段,因为它正在移动DOM并获取值?或者是否有另一个序列化插件可以做到这一点?或者有人有一个mod我可以使用其中一个插件使其工作?

还是我注定要破解它?

CMS*_*CMS 37

您可以只读取字段,这将禁止更改控件的值.

编辑:您可以轻松编写" serializeDisabled "函数,迭代已禁用的表单元素,这些元素具有name属性并在末尾使用jQuery.param函数,以生成序列化字符串:

(function ($) {
  $.fn.serializeDisabled = function () {
    var obj = {};

    $(':disabled[name]', this).each(function () { 
        obj[this.name] = $(this).val(); 
    });
    return $.param(obj);
  }
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

  • 我想要这个值,因为我不想为某些字段编写特殊代码("这个字段是禁用/选择所以我必须在其他地方获取值").我想要一致/简洁的代码,将值放在表单中,然后当这些字段被发回时,我可以使用一组代码来读取值并完成.我希望它是通用的.这篇文章不是关于概念的讨论......我正在寻找我的问题的答案 (11认同)
  • 你不能只读取一个<select>框...但是需要另一个hack来完成这项工作 (9认同)

Ket*_*tan 19

为什么不在使用.removeAttr()和提交之前简单地启用所有禁用的输入字段.submit().

$('#my_form').submit(function(){
    $("#my_form :disabled").removeAttr('disabled');
});
Run Code Online (Sandbox Code Playgroud)


Nic*_*ina 5

好吧......也许我没有明确地问我的问题......但我要找的答案就在这里:

http://docs.jquery.com/Plugins:Forms#.val.28.29_becomes_.fieldValue.28.29

我在我的问题中提到了ajaxSubmit(),它来自jQuery Form插件......在该插件中有一个名为fieldValue()的方法,它接受一个名为"success"的参数.如果传入"true",则插件仅返回W3C定义为"成功"控件(不包括禁用控件)的内容.但如果将其设置为false,则无论W3C定义如何,它都将获得所有值.

我知道这是可能的,因为整个提交都是由插件控制的,与HTML标准/定义无关......我只是想看看这个选项是否已经在这个插件或其他中提供插件.它在此插件中可用,但默认行为是像标准HTML提交一样