0

私のクライアントは、チェックアウト時に入力されるすべての顧客の電話番号 (ゲストまたは登録ユーザー) を (###)###-#### 形式を使用して統一することを望んでいます。うまくいくと思われるコードのスニペットを見つけましたが、それを Magento フォームに実装して正しく実行し、ユーザーがフォームを送信したときに Magento に入るデータを台無しにしないようにする方法が正確にはわかりません。また、1234567890 の代わりにこのような番号を保存することは、多くの理由でベスト プラクティスではありませんが、これは顧客が望んでいることです。どんな助けでも大歓迎です。

編集中のファイル: template/checkout/onepage/billing.phtml

コード行:

<div class="field">
<label for="billing:telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
<div class="input-box">
<input type="text" name="billing[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="billing:telephone" />
</div>
</div>

実装しようとしていることがわかったコード: http://www.weberdev.com/get_example.php3?ExampleID=3605

<?php function phone_number($sPhone){ 
$sPhone = ereg_replace("[^0-9]",'',$sPhone); 
if(strlen($sPhone) != 10) return(False); 
$sArea = substr($sPhone,0,3); 
$sPrefix = substr($sPhone,3,3); 
$sNumber = substr($sPhone,6,4); 
$sPhone = "(".$sArea.")".$sPrefix."-".$sNumber; 
return($sPhone); 
} 
print phone_number("  (555) 555 - 1212 "); 
?>
4

3 に答える 3

0

これを追加した後、入力フィールドに validate-phoneLax クラスを追加します。html は次のようになります。

<input type="text" name="billing[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?> validate-phoneLax" id="billing:telephone" />

フォームを定義する必要があるよりも機能しない場合は、ページを更新してください。そのためには、以下のコードを追加してください。フォームIDを更新します。

  <script type="text/javascript">
      var myForm = new VarienForm( 'your_form_id_here' );
  </script>

これはうまくいくはずです

于 2013-05-17T14:47:28.183 に答える
0

プロトタイプ/validate.jsに移動して見つけます

['validate-phoneStrict', 'Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.', function(v) {
                return Validation.get('IsEmpty').test(v) || /^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);
            }], 

そして交換

  [ 'validate-phoneStrict',
      'Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.',
      function(v)
      {
          return Validation.get('IsEmpty').test(v)
              || /\+(9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\d{1,14}$/.test(v);
      }
    ]
于 2016-08-23T09:06:21.460 に答える
-2

簡単な修正: jquery validation.js を使用するだけです...フィールドのクラスに「validate-phoneStrict」を含めるように設定します

これを使用すると、js で次のコード ルールを使用できるようになります。

'validate-phoneStrict', 'Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.', function(v) {
                return Validation.get('IsEmpty').test(v) || /^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v);
于 2015-05-13T23:02:18.533 に答える