|
90 | 90 | ? "date" |
91 | 91 | : "text"; |
92 | 92 | $("#{{stock._id}}_{{key}}").addClass("complete-invisible"); |
93 | | - $("#{{stock._id}}_{{key}}_input").attr("type", inputType).focus(); |
94 | | - var form = $("#{{stock._id}}_{{key}}_input").get(0); |
| 93 | + const $input = $("#{{stock._id}}_{{key}}_input"); |
| 94 | + $input.attr("type", inputType); |
| 95 | + $input.attr("data-original-value", $input.val()); |
| 96 | + $input.attr("data-submitted", "0"); |
| 97 | + $input.focus(); |
| 98 | + var form = $input.get(0); |
95 | 99 | if (inputType === "text") { |
96 | 100 | // HACK: テキストカーソルを末尾に移動 |
97 | 101 | tmp = form.value; |
|
101 | 105 | }); |
102 | 106 |
|
103 | 107 | $("#{{stock._id}}_{{key}}_input").on("blur", (e) => { |
| 108 | + const original = $(e.currentTarget).attr("data-original-value"); |
| 109 | + const current = $(e.currentTarget).val(); |
104 | 110 | $("#{{stock._id}}_{{key}}").removeClass("complete-invisible"); |
105 | 111 | $("#{{stock._id}}_{{key}}_input").attr("type", "hidden"); |
| 112 | + if (current !== original && $(e.currentTarget).attr("data-submitted") !== "1") { |
| 113 | + $("#{{stock._id}}_{{key}}_form").trigger("submit"); |
| 114 | + } |
| 115 | + }); |
| 116 | + |
| 117 | + // iOS Safari の date 入力では Enter submit されないことがあるため change で確定更新 |
| 118 | + $("#{{stock._id}}_{{key}}_input").on("change", (e) => { |
| 119 | + if ("{{key}}" === "str_created_at" || "{{key}}" === "str_expiry_date") { |
| 120 | + $("#{{stock._id}}_{{key}}_form").trigger("submit"); |
| 121 | + } |
106 | 122 | }); |
107 | 123 |
|
108 | 124 | form = $("#{{stock._id}}_{{key}}_form").submit((ele) => { |
| 125 | + $("#{{stock._id}}_{{key}}_input").attr("data-submitted", "1"); |
109 | 126 | if (ele.target.name == "item_name") { |
110 | 127 | const item_name = $("#{{stock._id}}_item_name_input").val(); |
111 | 128 | if (item_name == "") { |
|
0 commit comments