如何更好地清理此代码?

时间:2014-11-03 14:40:09

标签: magento jquery-autocomplete

我有一个插入Magento的脚本,它似乎没有正常运行。每当它运行时,它实际上将html文档的内容反馈到文本框而不是自动提供。谁能告诉我这个问题似乎是什么?我认为这可能是两个相互冲突的功能,是否有一个很好的方法来清理它?

<script type="text/javascript" src="jquery-2.1.1.js"></script>
<script type="text/javascript" src="jquery.autocomplete.js"></script>

<script type="text/javascript" >
//<![CDATA[
$j = jQuery.noConflict();

$j(document).ready(function(){
        $j("#antique_toys_materials").keyup
        (function() 
            {
                var tag= $j(this).val();
                if(tag!='')
                {
                    $j.ajax(
                    {
                        type: "GET",
                        url: "autocomplete.php",
                        data: "q=" + tag,  
                        cache: true,
                        success: function(result)
                        {
                            $j("#antique_toys_materials").val(result);
                        }
                    }
                    );
                }
                return false; 
            }
        );
        }
    );
        //]]>
</script>


<script type="text/javascript" >
//<![CDATA[
    $j = jQuery.noConflict();
        $j(window).load(function(){

function calculate() 
{
    var values = [
        $j("#cost").val(), 
        $j("#shipping_paid").val(), 
        $j("#tax_paid").val()
    ];

    var percent_value = $j("#our_markup").val();
//---------------------------// 
    if (percent_value == 285)
    {
    var percent_value = 0;
    }


    var sub_total = eval( values.join('+') );
    var total = eval("sub_total+(sub_total * percent_value)");

    var shortened_total = total.toFixed(2);

    $j("#price").val(shortened_total);
}


$j( document ).ready(function() {
$j(document).on('input', 'input', calculate);
$j(document).on('change', 'select,input', calculate);
});


});
    //]]>
</script>

它与此

挂钩
<?php
$q=$_GET['q'];
$my_data=mysql_real_escape_string($q);
$mysqli=mysqli_connect('localhost','XXXXXXX','XXXXXXX','XXXXXXX') or die("Database Error");
$sql = "SELECT DISTINCT auto_complete_suggestions FROM auto_complete WHERE auto_complete_suggestions LIKE '%$my_data%' 
 ORDER BY CASE WHEN auto_complete_suggestions = '$mydata' THEN 0  
               WHEN auto_complete_suggestions LIKE '$mydata%' THEN 1  
               WHEN auto_complete_suggestions LIKE '%$mydata%' THEN 2  
               WHEN auto_complete_suggestions LIKE '%$mydata' THEN 3  
               ELSE 4
          END, auto_complete_suggestions LIMIT 0,1";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error());

if($result)
{
    while($row=mysqli_fetch_array($result))
      {
       echo $row['auto_complete_suggestions']."\n";
      }
}
?>

在没有noConflict的情况下它可以正常工作但是当我把它放在Magento中时,它似乎需要一些帮助而且我确信,因为它正在将html文件反馈给它,这是错误的。 思考?谢谢!

1 个答案:

答案 0 :(得分:0)

这只是一个快速猜测,但尝试使用&#34; jQuery&#34;而不是&#34; $&#34;。我不得不更改一些干扰原型的插件脚本,因为它也使用&#34; $&#34;。一旦我用jQuery这个单词替换了$的所有实例,事情就像我预期的那样开始工作。