Jquery:禁用“输入”字段在表单中不可用

时间:2011-03-29 15:28:31

标签: javascript jquery

我正在尝试根据用户输入动态设置表单内的输入值(在我的情况下为“choice”)。设置所需的值后,我想禁用该字段,以便用户无法更改它。这是我正在使用的代码。

// HTML
<select name="0-choices" id="id_0-choices">
<option value="Phone">Phone</option>
<option value="Fax">Fax</option>
<option value="Voicemail">Voicemail</option>
</select>

//Javascript
$(cfield).children().first().removeAttr('selected');
$(cfield).children('option[value="Voicemail"]').attr('selected','selected');
//$(cfield).val('Voicemail');
$(cfield).attr('disabled','disabled');

问题是,如果我禁用该字段,则该字段在发布的数据中不可用。所以我的验证函数抱怨数据不可用。如何“冻结”输入字段,然后才能发布它。

6 个答案:

答案 0 :(得分:7)

我也遇到了这个问题,猜测你在发送Ajax请求时尝试禁用字段,我发现最好的解决方案是使用readonly:

$(cfield).attr('readonly', true);

用户无法修改字段的值,但仍然可以阅读

答案 1 :(得分:3)

您可以禁用该字段,然后将其值复制到隐藏的表单字段中。

HTML

<input type="hidden" name="cfield_hidden"/>

的JavaScript

// snip...
$(cfield).attr('disabled','disabled');
$('#cfield_hidden').val($(cfield.val());

或者,您可以在提交表单之前立即启用选项:

$('some-form-selector').submit(function ()
{
    $(this).find('option').attr('disabled', false);
});

答案 2 :(得分:0)

我会在提交时克隆该字段并设置删除已禁用的attr。并将其附加到您的表单,显示为无。

或者只是删除已禁用的onsubmit。

PS:你的用户名会比M更冷,而不是N;)

答案 3 :(得分:0)

创建一个隐藏的输入字段,如

$('.your-form').append("<input type='hidden' name='0-choices' value='"+$('cfield option:selected).val()+"' />")

因为禁用的输入将不会被提交..

答案 4 :(得分:0)

禁用输入字段后,您可以使用隐藏字段存储要发送的值。

这样的事情:

$(cfield).append('<input type="hidden" id="hiddenField" value="'+$(cfield).val()+'"/>');
$(cfield).attr('disabled','disabled');

答案 5 :(得分:0)

正如您所说的禁用输入不包含在发布数据中,您最好的选择是修复服务器端逻辑或存储名称为0选项的输入隐藏字段以及您想要发布的值。