1

ajaxチェックスクリプトをproduct.tpl(catalog)に入れたいのですが、入力されたテキストボックスの値を取得してデータベースにチェックインする必要があります。存在しない場合は、すぐにエラーメッセージが表示されます。そのためのajaxスクリプトがありますが、バックエンドから生成されたテキストボックス名を取得できないため、統合できません。

これが私のproduct.tplテキストボックスです。

<?php if ($option['type'] == 'text') { ?>
        <div id="option-<?php echo $option['product_option_id']; ?>" class="option">
          <?php if ($option['required']) { ?>
          <span class="required">*</span>
          <?php } ?>
          <b><?php echo $option['name']; ?>:</b><br />
          <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['option_value']; ?>" />
        </div>
        <br />
        <?php } ?>

これが私のajaxです。

<script type="text/javascript">
$(document).ready(function()//When the dom is ready 
{
$("#textboxname").change(function() 
{ 

var name = $("#textboxname").val();
if(textboxname.length > 3)
{
$("#availability_status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');


$.ajax({  //Make the Ajax Request
    type: "POST",  
    url: "ajax_check.php",  //file name
    data: "name="+ name,  //data
    success: function(server_response){  

   $("#availability_status").ajaxComplete(function(event, request){ 

   if(server_response == '0')//if ajax_check.php return value "0"
   { 
   $("#availability_status").html('<img src="available.png" align="absmiddle"> <font color="Green"> Available </font>  ');
   //add this image to the span with id "availability_status"
   }  
   else  if(server_response == '1')//if it returns "1"
   {  
    $("#availability_status").html('<img src="not_available.png" align="absmiddle"> <font color="red">Not Available </font>');
   }  

   });
   } 

  }); 

}

return false;
});

});
</script>

textboxnameに、何を入れるべきかわかりません。誰か私に提案してください

4

1 に答える 1

0

これはハードコーディングする必要があります。オプションのテキスト フィールドには、class 属性も id 属性もありません。このテキスト フィールド オプションを含む製品の詳細を開き、FireBug を開き、そのテキスト フィールドの入力を調べます。nameその属性値を見つけます。次のようになります。

<input type="text" value="test" name="option[208]">

jQuery でこれをセレクターとして使用します。

$('div.options input[name="option[208]"]').change(function() { ... }

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

そして 1 つの提案: カスタム ファイルを使用する代わりに、クラスajax_check.php内に独自のアクション (メソッド) を実装/catalog/controller/product/product.phpし、URL への POST を実行する必要がありますindex.php?route=catalog/product/ajax_check(新しいメソッド/アクションが呼び出されると仮定しますajax_check)...

于 2013-08-15T11:06:46.283 に答える