[Svn-src-all:4273] [version-2_13_0 23187] #2348 r23171 - r23176 r23178 - r23180 をマージ
h_yoshimoto
admin @ mail.ec-cube.net
2013年 9月 4日 (水) 14:34:12 JST
Subversion committed to /home/svn/open 23187
http://svn.ec-cube.net/open_trac/changeset/23187
┌────────────────────────────┐
│更新者 : h_yoshimoto │
│更新日時: 2013-09-04 14:34:12 +0900 (水, 04 9月 2013)│
└────────────────────────────┘
Log:
--------------------------------------------------------
#2348 r23171 - r23176 r23178 - r23180 をマージ
Changed: [U:修正,A:追加,D:削除]
--------------------------------------------------------
U branches/version-2_13_0/data/Smarty/templates/default/shopping/confirm.tpl
D branches/version-2_13_0/data/Smarty/templates/mobile/frontparts/bloc/guide.tpl
U branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_confirm.tpl
U branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_input.tpl
U branches/version-2_13_0/data/class/SC_Product.php
U branches/version-2_13_0/data/class/pages/shopping/LC_Page_Shopping.php
U branches/version-2_13_0/html/js/eccube.js
U branches/version-2_13_0/html/user_data/packages/sphone/js/jquery.autoResizeTextAreaQ-0.1.js
変更: branches/version-2_13_0/data/Smarty/templates/default/shopping/confirm.tpl
===================================================================
--- branches/version-2_13_0/data/Smarty/templates/default/shopping/confirm.tpl 2013-09-04 01:44:36 UTC (rev 23186)
+++ branches/version-2_13_0/data/Smarty/templates/default/shopping/confirm.tpl 2013-09-04 05:34:12 UTC (rev 23187)
@@ -181,7 +181,66 @@
<col width="30%" />
<col width="70%" />
<tbody>
- <!--{include file="`$smarty.const.TEMPLATE_REALDIR`frontparts/form_personal_confirm.tpl" flgFields=2 emailMobile=false prefix="order_"}-->
+ <tr>
+ <th scope="row">お名前</th>
+ <td><!--{$arrForm.order_name01|h}--> <!--{$arrForm.order_name02|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">お名前(フリガナ)</th>
+ <td><!--{$arrForm.order_kana01|h}--> <!--{$arrForm.order_kana02|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">会社名</th>
+ <td><!--{$arrForm.order_company_name|h}--></td>
+ </tr>
+ <!--{if $smarty.const.FORM_COUNTRY_ENABLE}-->
+ <tr>
+ <th scope="row">国</th>
+ <td><!--{$arrCountry[$arrForm.order_country_id]|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">ZIPCODE</th>
+ <td><!--{$arrForm.order_zipcode|h}--></td>
+ </tr>
+ <!--{/if}-->
+ <tr>
+ <th scope="row">郵便番号</th>
+ <td>〒<!--{$arrForm.order_zip01|h}-->-<!--{$arrForm.order_zip02|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">住所</th>
+ <td><!--{$arrPref[$arrForm.order_pref]}--><!--{$arrForm.order_addr01|h}--><!--{$arrForm.order_addr02|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">電話番号</th>
+ <td><!--{$arrForm.order_tel01}-->-<!--{$arrForm.order_tel02}-->-<!--{$arrForm.order_tel03}--></td>
+ </tr>
+ <tr>
+ <th scope="row">FAX番号</th>
+ <td>
+ <!--{if $arrForm.order_fax01 > 0}-->
+ <!--{$arrForm.order_fax01}-->-<!--{$arrForm.order_fax02}-->-<!--{$arrForm.order_fax03}-->
+ <!--{/if}-->
+ </td>
+ </tr>
+ <tr>
+ <th scope="row">メールアドレス</th>
+ <td><!--{$arrForm.order_email|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">性別</th>
+ <td><!--{$arrSex[$arrForm.order_sex]|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">職業</th>
+ <td><!--{$arrJob[$arrForm.order_job]|default:'(未登録)'|h}--></td>
+ </tr>
+ <tr>
+ <th scope="row">生年月日</th>
+ <td>
+ <!--{$arrForm.order_birth|regex_replace:"/ .+/":""|regex_replace:"/-/":"/"|default:'(未登録)'|h}-->
+ </td>
+ </tr>
</tbody>
</table>
削除: branches/version-2_13_0/data/Smarty/templates/mobile/frontparts/bloc/guide.tpl
===================================================================
変更: branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_confirm.tpl
===================================================================
--- branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_confirm.tpl 2013-09-04 01:44:36 UTC (rev 23186)
+++ branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_confirm.tpl 2013-09-04 05:34:12 UTC (rev 23187)
@@ -61,9 +61,10 @@
<!--{assign var=key2 value="`$prefix`zip02"}-->
〒 <!--{$arrForm[$key1].value|h}--> - <!--{$arrForm[$key2].value|h}--><br />
<!--{assign var=key1 value="`$prefix`pref"}-->
+ <!--{assign var=key_pref value="`$arrForm[$key1].value`"}-->
<!--{assign var=key2 value="`$prefix`addr01"}-->
<!--{assign var=key3 value="`$prefix`addr02"}-->
- <!--{$arrPref[$arrForm[$key1].value]|h}--><!--{$arrForm[$key2].value|h}--><!--{$arrForm[$key3].value|h}-->
+ <!--{$arrPref[$key_pref]|h}--><!--{$arrForm[$key2].value|h}--><!--{$arrForm[$key3].value|h}-->
</dd>
<dt>電話番号</dt>
<dd>
変更: branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_input.tpl
===================================================================
--- branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_input.tpl 2013-09-04 01:44:36 UTC (rev 23186)
+++ branches/version-2_13_0/data/Smarty/templates/sphone/frontparts/form_personal_input.tpl 2013-09-04 05:34:12 UTC (rev 23187)
@@ -29,8 +29,8 @@
<!--{if $arrErr[$key1] || $arrErr[$key2]}-->
<div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></div>
<!--{/if}-->
- <input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" class="boxHarf text data-role-none" placeholder="姓" />
- <input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" class="boxHarf text data-role-none" placeholder="名" />
+ <input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxHarf text data-role-none" placeholder="姓" />
+ <input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxHarf text data-role-none" placeholder="名" />
</dd>
<dt>お名前(フリガナ) <span class="attention">※</span></dt>
@@ -40,7 +40,7 @@
<!--{if $arrErr[$key1] || $arrErr[$key2]}-->
<div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></div>
<!--{/if}-->
- <input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" class="boxHarf text data-role-none" placeholder="セイ"/> <input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" class="boxHarf text data-role-none" placeholder="メイ"/>
+ <input type="text" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxHarf text data-role-none" placeholder="セイ"/> <input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxHarf text data-role-none" placeholder="メイ"/>
</dd>
<dt>郵便番号 <span class="attention">※</span></dt>
@@ -53,7 +53,7 @@
<!--{if $arrErr[$key1] || $arrErr[$key2]}-->
<div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></div>
<!--{/if}-->
- <p><input type="tel" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" class="boxShort text data-role-none" /> <a href="http://search.post.japanpost.jp/zipcode/" target="_blank" rel="external"><span class="fn">郵便番号検索</span></a></p>
+ <p><input type="tel" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxShort text data-role-none" /> <a href="http://search.post.japanpost.jp/zipcode/" target="_blank" rel="external"><span class="fn">郵便番号検索</span></a></p>
<a href="javascript:eccube.getAddress('<!--{$smarty.const.INPUT_ZIP_URLPATH}-->', '<!--{$key1}-->', '<!--{$key2}-->', '<!--{$key3}-->', '<!--{$key4}-->');" class="btn_sub btn_inputzip">郵便番号から住所自動入力</a>
</dd>
@@ -68,8 +68,8 @@
<!--{html_options options=$arrPref selected=$arrForm[$key3].value}-->
</select>
- <input type="text" name="<!--{$key4}-->" value="<!--{$arrForm[$key4].value|h}-->" class="boxLong text top data-role-none" placeholder="市区町村名" />
- <input type="text" name="<!--{$key5}-->" value="<!--{$arrForm[$key5].value|h}-->" class="boxLong text data-role-none" placeholder="番地・ビル名" />
+ <input type="text" name="<!--{$key4}-->" value="<!--{$arrForm[$key4].value|h}-->" style="<!--{$arrErr[$key4]|sfGetErrorColor}-->" class="boxLong text top data-role-none" placeholder="市区町村名" />
+ <input type="text" name="<!--{$key5}-->" value="<!--{$arrForm[$key5].value|h}-->" style="<!--{$arrErr[$key5]|sfGetErrorColor}-->" class="boxLong text data-role-none" placeholder="番地・ビル名" />
</dd>
<dt>電話番号 <span class="attention">※</span></dt>
@@ -80,7 +80,7 @@
<!--{if $arrErr[$key1] || $arrErr[$key2] || $arrErr[$key3]}-->
<div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--><!--{$arrErr[$key3]}--></div>
<!--{/if}-->
- <input type="tel" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key3}-->" value="<!--{$arrForm[$key3].value|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" class="boxShort text data-role-none" />
+ <input type="tel" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key3}-->" value="<!--{$arrForm[$key3].value|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3]|sfGetErrorColor}-->" class="boxShort text data-role-none" />
</dd>
<dt>FAX</dt>
@@ -91,7 +91,7 @@
<!--{if $arrErr[$key1] || $arrErr[$key2] || $arrErr[$key3]}-->
<div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--><!--{$arrErr[$key3]}--></div>
<!--{/if}-->
- <input type="tel" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key3}-->" value="<!--{$arrForm[$key3].value|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" class="boxShort text data-role-none" />
+ <input type="tel" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" maxlength="<!--{$arrForm[$key1].length}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" maxlength="<!--{$arrForm[$key2].length}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxShort text data-role-none" /> − <input type="tel" name="<!--{$key3}-->" value="<!--{$arrForm[$key3].value|h}-->" maxlength="<!--{$arrForm[$key3].length}-->" style="<!--{$arrErr[$key3]|sfGetErrorColor}-->" class="boxShort text data-role-none" />
</dd>
<!--{if $flgFields > 1}-->
@@ -103,8 +103,8 @@
<!--{if $arrErr[$key1] || $arrErr[$key2]}-->
<div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></div>
<!--{/if}-->
- <input type="email" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" class="boxLong text top data-role-none" />
- <input type="email" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" class="boxLong text data-role-none" placeholder="確認のため2回入力してください" />
+ <input type="email" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxLong text top data-role-none" />
+ <input type="email" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxLong text data-role-none" placeholder="確認のため2回入力してください" />
</dd>
<!--{if $emailMobile}-->
@@ -115,8 +115,8 @@
<!--{if $arrErr[$key1] || $arrErr[$key2]}-->
<div class="attention"><!--{$arrErr[$key1]}--><!--{$arrErr[$key2]}--></div>
<!--{/if}-->
- <input type="email" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" class="boxLong text top data-role-none" />
- <input type="email" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" class="boxLong text data-role-none" placeholder="確認のため2回入力してください" />
+ <input type="email" name="<!--{$key1}-->" value="<!--{$arrForm[$key1].value|h}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxLong text top data-role-none" />
+ <input type="email" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxLong text data-role-none" placeholder="確認のため2回入力してください" />
</dd>
<!--{/if}-->
@@ -126,9 +126,9 @@
<!--{if $arrErr[$key1]}-->
<div class="attention"><!--{$arrErr[$key1]}--></div>
<!--{/if}-->
- <span style="<!--{$arrErr[$key1]|sfGetErrorColor}-->">
+ <p style="<!--{$arrErr[$key1]|sfGetErrorColor}-->">
<!--{html_radios name=$key1 options=$arrSex selected=$arrForm[$key1].value separator=' '}-->
- </span>
+ </p>
</dd>
<dt>職業</dt>
@@ -137,7 +137,7 @@
<!--{if $arrErr[$key1]}-->
<div class="attention"><!--{$arrErr[$key1]}--></div>
<!--{/if}-->
- <select name="<!--{$key1}-->" class="boxLong data-role-none">
+ <select name="<!--{$key1}-->" style="<!--{$arrErr[$key1]|sfGetErrorColor}-->" class="boxLong data-role-none">
<option value="">選択してください</option>
<!--{html_options options=$arrJob selected=$arrForm[$key1].value}-->
</select>
@@ -188,7 +188,7 @@
<!--{html_options options=$arrReminder selected=$arrForm[$key1].value}-->
</select>
- <input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" class="boxLong text data-role-none" placeholder="質問の答えを入力してください" />
+ <input type="text" name="<!--{$key2}-->" value="<!--{$arrForm[$key2].value|h}-->" style="<!--{$arrErr[$key2]|sfGetErrorColor}-->" class="boxLong text data-role-none" placeholder="質問の答えを入力してください" />
</dd>
<dt>メールマガジン <span class="attention">※</span></dt>
変更: branches/version-2_13_0/data/class/SC_Product.php
===================================================================
--- branches/version-2_13_0/data/class/SC_Product.php 2013-09-04 01:44:36 UTC (rev 23186)
+++ branches/version-2_13_0/data/class/SC_Product.php 2013-09-04 05:34:12 UTC (rev 23187)
@@ -77,7 +77,6 @@
{
$table = 'dtb_products AS alldtl';
- $objQuery->setGroupBy('alldtl.product_id');
if (is_array($this->arrOrderData) and $objQuery->order == '') {
$o_col = $this->arrOrderData['col'];
$o_table = $this->arrOrderData['table'];
変更: branches/version-2_13_0/data/class/pages/shopping/LC_Page_Shopping.php
===================================================================
--- branches/version-2_13_0/data/class/pages/shopping/LC_Page_Shopping.php 2013-09-04 01:44:36 UTC (rev 23186)
+++ branches/version-2_13_0/data/class/pages/shopping/LC_Page_Shopping.php 2013-09-04 05:34:12 UTC (rev 23187)
@@ -389,6 +389,8 @@
*/
public function lfCheckError(&$objFormParam)
{
+ $arrParams = $objFormParam->getHashArray();
+
$objErr = SC_Helper_Customer_Ex::sfCustomerCommonErrorCheck($objFormParam, 'order_');
// 別のお届け先チェック
変更: branches/version-2_13_0/html/js/eccube.js
===================================================================
--- branches/version-2_13_0/html/js/eccube.js 2013-09-04 01:44:36 UTC (rev 23186)
+++ branches/version-2_13_0/html/js/eccube.js 2013-09-04 05:34:12 UTC (rev 23187)
@@ -193,39 +193,55 @@
ret = true;
}
if (ret) {
- var formElement = $("form#" + form);
- formElement.find("*[name=" + key + "]").val(val);
- formElement.submit();
+ var values = {};
+ values[key] = val;
+ eccube.submitForm(values, form);
}
return false;
};
eccube.setValue = function(key, val, form) {
- if (typeof form === 'undefined') {
- form = eccube.defaults.formId;
- }
- var formElement = $("form#" + form);
+ var formElement = eccube.getFormElement(form);
formElement.find("*[name=" + key + "]").val(val);
};
- eccube.changeAction = function(url) {
- document['form1'].action = url;
+ eccube.changeAction = function(url, form) {
+ var formElement = eccube.getFormElement(form);
+ formElement.attr("action", url);
};
// ページナビで使用する。
eccube.movePage = function(pageno, mode, form) {
- if (form === undefined) {
- form = eccube.defaults.formId;
- }
- var formElement = $("form#" + form);
- formElement.find("input[name=pageno]").val(pageno);
+ var values = {pageno: pageno};
if (mode !== undefined) {
- formElement.find("input[name='mode']").val(mode);
+ values.mode = mode;
}
+ eccube.submitForm(values, form);
+ };
+
+ /**
+ * フォームを送信する.
+ *
+ * @param values
+ * @param form
+ */
+ eccube.submitForm = function(values, form){
+ var formElement = eccube.getFormElement(form);
+ if (values !== undefined && typeof values === "object") {
+ $.each(values, function(index, value) {
+ eccube.setValue(index, value, formElement);
+ });
+ }
formElement.submit();
};
- eccube.submitForm = function(values, form){
+ /**
+ * フォームを特定してエレメントを返す.
+ *
+ * @param form
+ * @returns {*}
+ */
+ eccube.getFormElement = function(form){
var formElement;
if (form !== undefined && typeof form === "string" && form !== "") {
formElement = $("form#" + form);
@@ -234,12 +250,7 @@
} else {
formElement = $("form#" + eccube.defaults.formId);
}
- if (values !== undefined && typeof values === "object") {
- $.each(values, function(index, value) {
- formElement.find("input,select").filter("[name='" + index + "']").val(value);
- });
- }
- formElement.submit();
+ return formElement;
};
// ポイント入力制限。
変更: branches/version-2_13_0/html/user_data/packages/sphone/js/jquery.autoResizeTextAreaQ-0.1.js
===================================================================
--- branches/version-2_13_0/html/user_data/packages/sphone/js/jquery.autoResizeTextAreaQ-0.1.js 2013-09-04 01:44:36 UTC (rev 23186)
+++ branches/version-2_13_0/html/user_data/packages/sphone/js/jquery.autoResizeTextAreaQ-0.1.js 2013-09-04 05:34:12 UTC (rev 23187)
@@ -1 +1,121 @@
-/* * jQuery autoResizeTextAreaQ plugin * @requires jQuery v1.4.2 or later * * Copyright (c) 2010 M. Brown (mbrowniebytes A gmail.com) * Licensed under the Revised BSD license: * http://www.opensource.org/licenses/bsd-license.php * http://en.wikipedia.org/wiki/BSD_licenses * * Versions: * 0.1 - 2010-07-21 * initial * * usage: * $(document).ready( function() { * $('textarea').autoResizeTextAreaQ({"max_rows":8}); * }); * */(function($) { $.fn.autoResizeTextAreaQ = function(options) { var opts = $.extend({ // ya prob want to use max_rows: 10, // # - max rows to resize too // ya may want to use, but defaults should be ok extra_rows: 1, // # - nbr extra rows after last line ie padding; 0|1 optimal // ya should really specify in html rows: null, // null|# - null infer from html; # override html cols: null, // null|# - null infer from html; # override html debug: false // true|false - turn on|off console.log() }, options); // extra padding based on browser if ($.browser.msie) { opts.extra_rows += 1; } else if ($.browser.webkit) { opts.extra_rows += 1; } // else $.browser.mozilla // iterate over passed in selector, only process actual textareas return $(this).filter('textarea').each(function(index) { var ta = $(this); var orig = {}; // textarea rows cols current state if (opts.cols != null && opts.cols > 0) { ta.attr('cols', opts.cols); } orig.cols = ta.attr('cols'); if (opts.rows != null && opts.rows > 0) { ta.attr('rows', opts.rows); } orig.rows = ta.attr('rows'); // validate max extra_rows if (opts.max_rows == null || opts.max_rows < orig.rows) { opts.max_rows = orig.rows; } if (opts.extra_rows == null || opts.extra_rows < 0) { opts.extra_rows = 0; } if (opts.debug) { console.log('opts: ', opts, ' orig: ', orig); } // resize textares on load resize(ta, orig); // check resize on key input ta.bind('keyup', function(e) { resize(ta, orig); }); }); // end each() function resize(ta, orig) { // nbr explicit rows var nl_rows = ta.val().split('\n'); // nbr inferred rows var nbr_ta_rows = 0; for (index in nl_rows) { // overly simple check to account for text being auto wrapped and thus a new line nbr_ta_rows += Math.floor((nl_rows[index].length / orig.cols)) + 1; } // get final nbr ta rows var final_nbr_ta_rows = nbr_ta_rows - 1; // deduct for current line final_nbr_ta_rows += opts.extra_rows; // add on extra rows // resize textarea // note: $.animate() doesnt work well here since only inc/dec row by one if (final_nbr_ta_rows >= opts.max_rows) { ta.attr('rows', opts.max_rows); } else if (final_nbr_ta_rows >= orig.rows) { ta.attr('rows', final_nbr_ta_rows); } else { ta.attr('rows', orig.rows); } if (opts.debug) { console.log('rows: ', ta.attr('rows'), ' nbr nl_rows: ', nl_rows.length, ' nbr_ta_rows: ', nbr_ta_rows, ' final_nbr_ta_rows: ', final_nbr_ta_rows); } } // end resize()}; // end autoResizeTextAreaQ()})(jQuery);
+/*
+ * jQuery autoResizeTextAreaQ plugin
+ * @requires jQuery v1.4.2 or later
+ *
+ * Copyright (c) 2010 M. Brown (mbrowniebytes A gmail.com)
+ * Licensed under the Revised BSD license:
+ * http://www.opensource.org/licenses/bsd-license.php
+ * http://en.wikipedia.org/wiki/BSD_licenses
+ *
+ * Versions:
+ * 0.1 - 2010-07-21
+ * initial
+ *
+ * usage:
+ * $(document).ready( function() {
+ * $('textarea').autoResizeTextAreaQ({"max_rows":8});
+ * });
+ *
+ */
+
+(function($) {
+
+$.fn.autoResizeTextAreaQ = function(options) {
+ var opts = $.extend({
+ // ya prob want to use
+ max_rows: 10, // # - max rows to resize too
+
+ // ya may want to use, but defaults should be ok
+ extra_rows: 1, // # - nbr extra rows after last line ie padding; 0|1 optimal
+
+ // ya should really specify in html
+ rows: null, // null|# - null infer from html; # override html
+ cols: null, // null|# - null infer from html; # override html
+
+ debug: false // true|false - turn on|off console.log()
+ }, options);
+
+ // extra padding based on browser
+ /* Removed jQuery 1.9.x
+ if ($.browser.msie) {
+ opts.extra_rows += 1;
+ } else if ($.browser.webkit) {
+ opts.extra_rows += 1;
+ } // else $.browser.mozilla
+ */
+ opts.extra_rows += 1; // use webkit only.
+
+ // iterate over passed in selector, only process actual textareas
+ return $(this).filter('textarea').each(function(index) {
+
+ var ta = $(this);
+ var orig = {};
+
+ // textarea rows cols current state
+ if (opts.cols != null && opts.cols > 0) {
+ ta.attr('cols', opts.cols);
+ }
+ orig.cols = ta.attr('cols');
+
+ if (opts.rows != null && opts.rows > 0) {
+ ta.attr('rows', opts.rows);
+ }
+ orig.rows = ta.attr('rows');
+
+ // validate max extra_rows
+ if (opts.max_rows == null || opts.max_rows < orig.rows) {
+ opts.max_rows = orig.rows;
+ }
+ if (opts.extra_rows == null || opts.extra_rows < 0) {
+ opts.extra_rows = 0;
+ }
+
+ if (opts.debug) {
+ console.log('opts: ', opts, ' orig: ', orig);
+ }
+
+ // resize textares on load
+ resize(ta, orig);
+
+ // check resize on key input
+ ta.bind('keyup', function(e) {
+ resize(ta, orig);
+ });
+ }); // end each()
+
+ function resize(ta, orig) {
+
+ // nbr explicit rows
+ var nl_rows = ta.val().split('\n');
+
+ // nbr inferred rows
+ var nbr_ta_rows = 0;
+ for (index in nl_rows) {
+ // overly simple check to account for text being auto wrapped and thus a new line
+ nbr_ta_rows += Math.floor((nl_rows[index].length / orig.cols)) + 1;
+ }
+
+ // get final nbr ta rows
+ var final_nbr_ta_rows = nbr_ta_rows - 1; // deduct for current line
+ final_nbr_ta_rows += opts.extra_rows; // add on extra rows
+
+ // resize textarea
+ // note: $.animate() doesnt work well here since only inc/dec row by one
+ if (final_nbr_ta_rows >= opts.max_rows) {
+ ta.attr('rows', opts.max_rows);
+
+ } else if (final_nbr_ta_rows >= orig.rows) {
+ ta.attr('rows', final_nbr_ta_rows);
+
+ } else {
+ ta.attr('rows', orig.rows);
+ }
+
+ if (opts.debug) {
+ console.log('rows: ', ta.attr('rows'), ' nbr nl_rows: ', nl_rows.length, ' nbr_ta_rows: ', nbr_ta_rows, ' final_nbr_ta_rows: ', final_nbr_ta_rows);
+ }
+ } // end resize()
+
+}; // end autoResizeTextAreaQ()
+
+})(jQuery);
Svn-src-all メーリングリストの案内