在焦点rails3上的只读文本输入

时间:2011-08-05 08:41:16

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

我跟着railscast 213 (calendars) from Ryan Bates

他利用文本输入字段弹出日期选择器,这很好用。我想对输入日期给出限制,因此给出了以下属性:

$(function() { 
    $("#question_deadline").datepicker({ duration: 'fast', maxDate: '+2m', minDate: 'now' });
});

现在,当我按下文本字段时,弹出日期选择器,但我仍然可以通过在文本字段中键入来更改日期...所以我想我在_form.html.erb文件中将readonly选项设置为true这个特定的字段,这可以工作,但日期不会写入数据库。

然后我在application.js文件中创建了这个:

 $(function() { 
            $("#question_deadline").datepicker({ duration: 'fast', maxDate: '+2m', minDate: 'now' });
    });

    $("#question_deadline").focus {
        function()
        $("#question_deadline").attr("readonly", true);
    }

    $("#question_deadline").blur {
        function()
        $("#question_deadline").removeAttr("readonly");
    }

但是这会阻止日期选择器工作吗?

完全准备好了:

$(function() {
    $("#question_deadline").focus(function() {
        $("#question_deadline").attr("readonly", true);
    });
});

$(function() {
    $("#question_deadline").blur(function() {
        $("#question_deadline").removeAttr("readonly");
    });
});

此致 泰斯

1 个答案:

答案 0 :(得分:0)

我想您可能会拦截"onChange"事件,并验证控件中的值。 强制客户端始终使用日期选择器可能不一定受到所有人的欢迎。 我个人经常喜欢输入日期而不是选择日期。

如果您验证日期,并且该值恰好无效,您可以强制用户返回并显示日期选择器。我谦卑地认为这将是一种更加用户友好的方法。