2

ユーザーが3桁に戻る日付を入力できる日付フィールドを備えた祖先タイプのWebページを作成しようとしています。これにより、ドロップダウンボックスを備えたdate_selectとjquerydatepickerが非常に使いにくくなります。

年のテキストボックスを表示するのに、月と日のドロップダウンを表示する良い方法を知っている人はいますか?

date_selectの「インテリジェンス」を使用しながら、ユーザーがよりユーザーフレンドリーな方法(テキストボックス)で年を入力できるようにしたいと考えています。

あなたが私に与えることができるどんな助けにも感謝します!

4

3 に答える 3

1

Rails の開発者に敬意を表したいと思いますが、date_select の使いやすさは、ほとんどの場合において非常に弱いものです :-)

他のフィールド タイプとは異なり、date_select ヘルパーは、特別な名前と ID を持つ 3 つの選択タグを生成します。それぞれ、年、月、および日の要素に対応しています。paramsこれは、コントローラーのコードが配列を処理するときに、入力を (単一の) 日付に自動的に再組み立てできるようにする命名規則です。

申し訳ありませんが、命名形式の便利な例はありません (date_select を使用したことがないため) が、フィールドの名前を見ると、:discard_yearオプションを使用することで、ハッカーをあまり使わずに動作を模倣できる可能性があります。これにより、月と日のフィールド、および現在の年を含む隠しフィールド (と思います) が取得されます。

少しの JS や CoffeeScript が嫌いでない場合は、DOM がロードされた後に、hidden「type」属性を削除して (つまり単純なテキスト フィールドにする)、その値を空に設定することで、入力フィールドを変更できます。

于 2012-11-16T03:05:26.023 に答える
0

Tom が提案した Javascript ルートを試してみたところ、次のようなものを思いつきました。

<%= f.date_select :birth_date %>
<script>
    var date_field =
        document.getElementsByName('ancestor[birth_date(1i)]')[0];
    var new_html = '<%=
        f.text_field 'birth_date(1i)', :value=>(f.object.birth_date.strftime("%Y") rescue "") %>';

    date_field.outerHTML = new_html;           
</script>

(改善歓迎)

于 2016-08-24T11:42:07.670 に答える
0

3つのオプションから選択します

1-日と月のみにdate_selectを使用し、年にはjavascriptを含むテキストフィールドを使用します

Date_select は :discard_year オプションを受け入れます。true に設定すると、年フィールドは hidden_​​field としてレンダリングされるため、選択/ドロップダウンはありませんhttp://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method- i-date_select

次に、text_field を配置して keyUp イベントにバインドし、非表示の年フィールドの値を変更します

これに関する最も重要な問題は、ユーザーが JavaScript を無効にしている場合、テキスト フィールドの値が非表示フィールドに設定されないことです。これは問題です。

2-日と月とテキストフィールドのみにdate_selectを使用します

このオプションを実行できるかどうかはわかりません。上記と同じ date_select を使用して、入力フィールドの名前を年フィールドの名前に設定してみてください。問題は、date_select がその名前の非表示フィールドを配置し、同じ名前の別のフィールドを配置すると、送信時に送信される値が必要なものではない可能性があることです...可能かどうかを確認する必要があります。

3-date_select を使用し、Choosen http://harvesthq.github.com/chosen/を使用して機能を追加します。

いつものように date_select を配置し、必要な start_year と end_year を設定してから、selects を choosen selects に置き換えます。choosen select には、select の年の間を検索するためのテキスト フィールドが含まれています。

Choosen を使用すると、ほぼクロスブラウザのように一貫性のある外観が得られます (古い IE バージョンではテストしていません)。ユーザー フレンドリーなテキスト入力が得られます。JavaScript が無効になっている場合でも、ユーザーは 3 つの選択を行うことができます。

私は間違いなく3番を使用しますが、プラグインを追加したくないかもしれません.

于 2012-11-16T03:05:01.257 に答える