以ajax形式禁用html元素的最佳方法是什么?

时间:2014-01-10 20:56:18

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

我有一个在加载页面时被禁用的元素

<%= select_tag "count", get_count(local_trial_type).html_safe, :disabled => true %>

然后再次启用计数字段[2]:

jQuery("form").submit(function() {
    jQuery("#count").removeAttr("disabled");
});

然后表单由错误提交..然后再次启用相同的字段。因为我在提交表单[2]之前启用了该字段。并且在提交表单时返回相同的状态是有道理的。因此,现在禁用的字段在提交发生之前启用,因此当表单返回时出现验证错误,它显示为启用。

如何将其再次设为禁用字段。因为表单是用ajax提交的,所以它不会加载整个页面,因此当它返回错误消息时,document.ready中的代码没有任何意义。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能希望添加一个重新禁用输入元素的完整回调。

我相信你会这样做:

jQuery('form').bind('ajax:complete', function() {
    jQuery("#count").attr('disabled', 'disabled');
});

我假设您启用了input元素,因此将提交其值。作为启用然后重新禁用输入元素的替代方法,您可以使用两个输入元素:可见但永久禁用的输入元素和隐藏的输入元素。你总是给它们相同的值,但只有隐藏的输入元素才会有“name”属性。