Javascript Drupal 7 jQuery Drupal行为问题

Javascript Drupal 7 jQuery Drupal行为问题,javascript,jquery,drupal-7,Javascript,Jquery,Drupal 7,我一直在尝试将一个在d6中运行良好的javascript文件转换为d7,我一直在搜索有关drupal行为的信息,但似乎找不到解决此问题的正确方法 以下脚本返回了一个意外的标记错误),用于前面的结束括号(jQuery) (函数($){ var VAT=0.2; 变量数量\ u后缀=“字段采购订单数量”; var PRICE_SUFFIX=“现场采购订单价格”; var小计\u后缀=“现场采购订单项目st”; var VAT_后缀=“现场采购订单项目VAT”; var TOTAL_SUFFIX=“字

我一直在尝试将一个在d6中运行良好的javascript文件转换为d7,我一直在搜索有关drupal行为的信息,但似乎找不到解决此问题的正确方法

以下脚本返回了一个意外的标记错误),用于前面的结束括号(jQuery)

(函数($){
var VAT=0.2;
变量数量\ u后缀=“字段采购订单数量”;
var PRICE_SUFFIX=“现场采购订单价格”;
var小计\u后缀=“现场采购订单项目st”;
var VAT_后缀=“现场采购订单项目VAT”;
var TOTAL_SUFFIX=“字段采购订单项目总计”;
var数量域;
var-priceFields;
var fieldsValid=false;
函数isNumber(值){
return!isNaN(parseFloat(value))&&
isFinite(值);
}
函数有效值(值){
返回isNumber(值)&&
parseFloat(值)>0;
}
函数addCommas(nStr){
nStr+='';
var x=nStr.split('.');
var x1=x[0];
变量x2=x.长度>1?'.+x[1]:'';
var rgx=/(\d+)(\d{3})/;
while(rgx.测试(x1)){
x1=x1.替换(rgx,'$1'+','+'$2');
}
返回x1+x2;
}   
函数小数(值){
if(isNumber(值)){
var numericValue=parseFloat(值);
返回numericValue.toFixed(2);
}
}
函数validateFields(){
var fieldsValid=true;
var allFields=新数组();
quantityFields=jQuery('input[id*=“'+数量后缀+””);
priceFields=jQuery('input[id*=“'+价格后缀+”);
allFields.push.apply(allFields,quantityFields);
allFields.push.apply(allFields,priceFields);

对于(i=0;i我不知道您的代码是否正确,但强烈建议您以这种方式在Drupal>7中使用JavaScript:

(function ($) {
    Drupal.behaviors.yourFunction = {
        attach: function(context, settings) {

            var VAT = 0.2;
            var QUANTITY_SUFFIX = "field-po-quantity";
            var PRICE_SUFFIX = "field-po-price";
            var SUBTOTAL_SUFFIX = "field-po-item-st";
            var VAT_SUFFIX = "field-po-item-vat";
            var TOTAL_SUFFIX = "field-po-item-total";

            var quantityFields;
            var priceFields;
            var fieldsValid = false;

            function isNumber(value) {
                return    !isNaN(parseFloat(value)) &&
                    isFinite(value);
            }

            function validValue(value) {
                return    isNumber(value) &&
                    parseFloat(value) > 0;
            }

            function addCommas(nStr) {
                nStr += '';
                var x = nStr.split('.');
                var x1 = x[0];
                var x2 = x.length > 1 ? '.' + x[1] : '';
                var rgx = /(\d+)(\d{3})/;
                while (rgx.test(x1)) {
                    x1 = x1.replace(rgx, '$1' + ',' + '$2');
                }
                return x1 + x2;
            }

            function decimalise(value) {
                if (isNumber(value)) {
                    var numericValue = parseFloat(value);
                    return numericValue.toFixed(2);
                }
            }

            function validateFields() {
                var fieldsValid = true;
                var allFields = new Array();

                quantityFields = $('input[id*="' + QUANTITY_SUFFIX + '"]');
                priceFields = $('input[id*="' + PRICE_SUFFIX + '"]');

                allFields.push.apply(allFields, quantityFields);
                allFields.push.apply(allFields, priceFields);

                for (i=0; i<allFields.length; i++) {
                    var field = allFields[i];
                    var valueString = field.value;
                    if (!validValue(valueString)) {
                        field.style.borderStyle="solid";
                        field.style.border="inset 1px red";
                        fieldsValid = false;
                    } else {
                        field.style.borderStyle="none";
                    }
                }
                this.fieldsValid = fieldsValid;
            }

            $(document).click(function() {
                validateFields();
                if (fieldsValid) {
                    var subTotalSum = 0;
                    var vatSum = 0;
                    var totalSum = 0;
                    $('#field-po-items-values tbody tr:not(.content-multiple-removed-row)').each(function(){
                        var quantityString = $(this).find('input[id*="' + QUANTITY_SUFFIX + '"]').val();
                        var numericQuantity = decimalise(quantityString);
                        var priceString = $(this).find('input[id*="' + PRICE_SUFFIX + '"]').val();
                        var numericPrice = decimalise(priceString);
                        var subtotal = parseFloat(numericPrice * numericQuantity);
                        $(this).find('input[id*="' + SUBTOTAL_SUFFIX + '"]').val(addCommas(decimalise(subtotal)));
                        var vat = subtotal * VAT;
                        $(this).find('input[id*="' + VAT_SUFFIX + '"]').val(addCommas(decimalise(vat)));
                        var total = subtotal + vat;
                        $(this).find('input[id*="' + TOTAL_SUFFIX + '"]').val(addCommas(decimalise(total)));
                        subTotalSum += subtotal;
                        vatSum += vat;
                        totalSum += parseFloat(total);
                    });
                    $('input[id*="edit-field-po-subtotal"]').val(addCommas(decimalise(subTotalSum)));
                    $('input[id*="edit-field-po-vat"]').val(addCommas(decimalise(vatSum)));
                    $('input[id*="edit-field-po-total"]').val(addCommas(decimalise(totalSum)));
                }
            }


        }
    };
})(jQuery);
(函数($){
Drupal.behaviors.yourFunction={
附加:功能(上下文、设置){
var VAT=0.2;
变量数量\ u后缀=“字段采购订单数量”;
var PRICE_SUFFIX=“现场采购订单价格”;
var小计\u后缀=“现场采购订单项目st”;
var VAT_后缀=“现场采购订单项目VAT”;
var TOTAL_SUFFIX=“字段采购订单项目总计”;
var数量域;
var-priceFields;
var fieldsValid=false;
函数isNumber(值){
return!isNaN(parseFloat(value))&&
isFinite(值);
}
函数有效值(值){
返回isNumber(值)&&
parseFloat(值)>0;
}
函数addCommas(nStr){
nStr+='';
var x=nStr.split('.');
var x1=x[0];
变量x2=x.长度>1?'.+x[1]:'';
var rgx=/(\d+)(\d{3})/;
while(rgx.测试(x1)){
x1=x1.替换(rgx,'$1'+','+'$2');
}
返回x1+x2;
}
函数小数(值){
if(isNumber(值)){
var numericValue=parseFloat(值);
返回numericValue.toFixed(2);
}
}
函数validateFields(){
var fieldsValid=true;
var allFields=新数组();
quantityFields=$('input[id*=“'+数量后缀+'”);
priceFields=$('input[id*=“'+价格后缀+'”);
allFields.push.apply(allFields,quantityFields);
allFields.push.apply(allFields,priceFields);
对于(i=0;i


  • 我不知道您的代码是否正确,但强烈建议在Drupal>7中使用JavaScript:

    (function ($) {
        Drupal.behaviors.yourFunction = {
            attach: function(context, settings) {
    
                var VAT = 0.2;
                var QUANTITY_SUFFIX = "field-po-quantity";
                var PRICE_SUFFIX = "field-po-price";
                var SUBTOTAL_SUFFIX = "field-po-item-st";
                var VAT_SUFFIX = "field-po-item-vat";
                var TOTAL_SUFFIX = "field-po-item-total";
    
                var quantityFields;
                var priceFields;
                var fieldsValid = false;
    
                function isNumber(value) {
                    return    !isNaN(parseFloat(value)) &&
                        isFinite(value);
                }
    
                function validValue(value) {
                    return    isNumber(value) &&
                        parseFloat(value) > 0;
                }
    
                function addCommas(nStr) {
                    nStr += '';
                    var x = nStr.split('.');
                    var x1 = x[0];
                    var x2 = x.length > 1 ? '.' + x[1] : '';
                    var rgx = /(\d+)(\d{3})/;
                    while (rgx.test(x1)) {
                        x1 = x1.replace(rgx, '$1' + ',' + '$2');
                    }
                    return x1 + x2;
                }
    
                function decimalise(value) {
                    if (isNumber(value)) {
                        var numericValue = parseFloat(value);
                        return numericValue.toFixed(2);
                    }
                }
    
                function validateFields() {
                    var fieldsValid = true;
                    var allFields = new Array();
    
                    quantityFields = $('input[id*="' + QUANTITY_SUFFIX + '"]');
                    priceFields = $('input[id*="' + PRICE_SUFFIX + '"]');
    
                    allFields.push.apply(allFields, quantityFields);
                    allFields.push.apply(allFields, priceFields);
    
                    for (i=0; i<allFields.length; i++) {
                        var field = allFields[i];
                        var valueString = field.value;
                        if (!validValue(valueString)) {
                            field.style.borderStyle="solid";
                            field.style.border="inset 1px red";
                            fieldsValid = false;
                        } else {
                            field.style.borderStyle="none";
                        }
                    }
                    this.fieldsValid = fieldsValid;
                }
    
                $(document).click(function() {
                    validateFields();
                    if (fieldsValid) {
                        var subTotalSum = 0;
                        var vatSum = 0;
                        var totalSum = 0;
                        $('#field-po-items-values tbody tr:not(.content-multiple-removed-row)').each(function(){
                            var quantityString = $(this).find('input[id*="' + QUANTITY_SUFFIX + '"]').val();
                            var numericQuantity = decimalise(quantityString);
                            var priceString = $(this).find('input[id*="' + PRICE_SUFFIX + '"]').val();
                            var numericPrice = decimalise(priceString);
                            var subtotal = parseFloat(numericPrice * numericQuantity);
                            $(this).find('input[id*="' + SUBTOTAL_SUFFIX + '"]').val(addCommas(decimalise(subtotal)));
                            var vat = subtotal * VAT;
                            $(this).find('input[id*="' + VAT_SUFFIX + '"]').val(addCommas(decimalise(vat)));
                            var total = subtotal + vat;
                            $(this).find('input[id*="' + TOTAL_SUFFIX + '"]').val(addCommas(decimalise(total)));
                            subTotalSum += subtotal;
                            vatSum += vat;
                            totalSum += parseFloat(total);
                        });
                        $('input[id*="edit-field-po-subtotal"]').val(addCommas(decimalise(subTotalSum)));
                        $('input[id*="edit-field-po-vat"]').val(addCommas(decimalise(vatSum)));
                        $('input[id*="edit-field-po-total"]').val(addCommas(decimalise(totalSum)));
                    }
                }
    
    
            }
        };
    })(jQuery);
    
    (函数($){
    Drupal.behaviors.yourFunction={
    附加:功能(上下文、设置){
    var VAT=0.2;
    变量数量\ u后缀=“字段采购订单数量”;
    var PRICE_SUFFIX=“现场采购订单价格”;
    var小计\u后缀=“现场采购订单项目st”;
    var VAT_后缀=“现场采购订单项目VAT”;
    var TOTAL_SUFFIX=“字段采购订单项目总计”;
    var数量域;
    var-priceFields;
    var fieldsValid=false;
    函数isNumber(值){
    return!isNaN(parseFloat(value))&&
    isFinite(值);
    }
    函数有效值(值){
    返回isNumber(值)&&
    parseFloat(值)>0;
    }
    函数addCommas(nStr){
    nStr+='';
    var x=nStr.split('.');
    var x1=x[0];
    变量x2=x.长度>1?'.+x[1]:'';
    var rgx=/(\d+)(\d{3})/;
    while(rgx.测试(x1)){
    x1=x1.替换(rgx,'$1'+','+'$2');
    }
    返回x1+x2;
    }
    函数小数(值){
    if(isNumber(值)){
    var numericValue=parseFloat(值);
    返回numericValue.toFixed(2);
    }
    }
    函数validateFields(){
    var fieldsValid=true;
    var allFields=新数组();
    quantityFields=$('input[id*=“'+数量后缀+'”);
    priceFields=$('input[id*=“'+价格后缀+'”);
    allFields.push.apply(allFields,quantityFields);
    allFields.push.apply(allFields,priceFields);
    对于(i=0;i