0

我已经测试了以下脚本在我的 PHP 页面中运行:

<script>
  function calculate<?=$performance_item_id;?>(){
    alert('<?=$performance_item_id;?>');
    $.post('complete_calculate.php',{
      tid: document.getElementById('performance_item_id<?=$performance_item_id;?>').value
    },
    function(output){
      $('#complete_percentage<?=$performance_item_id;?>').html(output);
    });
  }
  calculate<?=$performance_item_id;?>()
</script>
<span id='complete_percentage<?=$performance_item_id;?>'></span>

首先,我想将 post 值更改为类似"$('.complete<?=$performance_item_id;?>').val();",也就是说,不是从 id 字段中获取某些内容,而是从具有相同类的多个字段中收集值。

其次,我想使用一个文本框来保存 HTML 输出,而 " <input type = "text" id='complete_percentage<?=$performance_item_id;?>' name = "complete_percentage[]" size = "5" value="0">" 不起作用!请帮忙!谢谢!

4

1 回答 1

0

你的问题不是很清楚,但这里有几点需要考虑:

  1. 无需不断地将 PHP 与 JavaScript 混合在一起。
    将 的值存储$performance_item_id在 JavaScript 变量中,然后重新使用它。

  2. 无需声明一个函数然后立即调用它。
    您可以使用(function(){}())模式* 立即执行您的代码。

  3. 使用 jQuery.map().get()函数来获取所有值的数组。

(function () {
    var id = '<?=$performance_item_id;?>';
    alert(id);

    $.post('complete_calculate.php', {   
        tid: $('.complete' + id).map(function(){ return this.value; }).get()
    }, function(output) {
        $('#complete_percentage' + id).html(output);
    }); 
}());

* 称为自执行匿名函数立即调用函数表达式


经过进一步澄清,您的 JavaScript 中似乎不需要任何PHP:

jQuery(function($) {
    $('[class^=complete_]').keyup(function() {
        $.post('complete_calculate.php', {   
            tid: $('.' + this.className).map(function(){ return this.value; }).get()
        }, function(output) {
            $('#complete_percentage' + this.className.replace('complete', '')).html(output);
        }); 
    });
});
于 2012-08-21T03:45:52.263 回答