magentoのtextareaのsystem.xmlで文字を制限する方法


7

textarea文字の長さを150文字に制限したいのですが、私のsystem.xmlコードは以下のとおりです。

...
<orderPlaceMessage translate="label">
    <label>Message for order place: </label>
    <frontend_type>textarea</frontend_type>
    <sort_order>1</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>

    {how to limit character length }

</orderPlaceMessage>
...

その方法は?

回答:


8

<orderPlaceMessage>要素に以下を追加します。

<validate>validate-length maximum-length-150</validate>

これにより、prototype.jsで使用されるこれらの検証CSSクラスが追加されます。より長い値を入力すると、次の一般的な検証メッセージが表示されます。

テキストの長さが指定されたテキスト範囲を満たしていません

したがって、コメントを追加して、この範囲何であるかをユーザーに知らせることをお勧めします。

<comment>Maximum length: 150 characters</comment>

制限がデータの整合性にとって重要な場合は、バックエンドモデルを使用してサーバー側の検証も追加する必要があります。Digital Pianismはすでにこのチュートリアルをリンクしています:http ://alanstorm.com/magento_system_config_validation

また、system.xmlのさまざまなオプションについて詳しく知りたい場合は、http://alanstorm.com/magento_system_configuration_in_depth_tutorialをご覧ください。


1

クライアント側の検証:

検証タグを使用して、文字数を制限するための独自の検証ルーチンを作成する必要があると思います。

こちらをご覧ください:http : //blog.baobaz.com/en/blog/custom-javascript-form-validators

サーバー側の検証:

もう少しコードを追加し、データを検証する前に保存ボタンをクリックすることを意味します:http : //alanstorm.com/magento_system_config_validation


0

文字数制限のために以下のjQueryスクリプトを使用しました:

jQuery("#sms_cnfg_advanced_settings textarea").keypress(function(event){
    var maxLength = 160;
    var length = this.value.length;
    if (length >= maxLength)
     {
        this.value = this.value.substring(0, maxLength);
        alert(maxLength + ' characters allowed, excess characters trimmed');
     }
});

jQuery("#sms_cnfg_advanced_settings textarea").on('keyup',function(){
    jQuery('.charnum').remove();
    var maxLength = 160;
    var length = this.value.length;

     var count=maxLength-length;
     jQuery('<span class="charnum">' +count+' Characters left</span>').insertAfter(jQuery(this));

}); 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.