JQuery/Javascript使用生成的ID设置表单字段的值


JQuery/Javascript set value of form field with generated ID

在我的页面上,我有很多表单,其中字段id是基于DB id生成的,如下所示:

            <input type="hidden" name="id" value="<?php echo (isset($content))?$content->getId():''?>" />
            <input type="hidden" id="x<?php echo $content->getId()?>"/>
            <input type="hidden" id="y<?php echo $content->getId()?>"/>
            <input type="hidden" id="x2<?php echo $content->getId()?>"/>
            <input type="hidden" id="y2<?php echo $content->getId()?>"/>

这给了我所有形式的唯一id。现在我在jquery框架中有了Javascript函数,它可以设置指定字段的无效值:

            $(function(){
                $('#jcrop_target_id<?php echo $content->getId()?>').Jcrop({
                    onSelect: updateCoords
                });
            });
            function updateCoords(c)
            {
                $('#x<?php echo $content->getId()?>').val(c.x);
                $('#y<?php echo $content->getId()?>').val(c.y);
                $('#x2<?php echo $content->getId()?>').val(c.x2);
                $('#y2<?php echo $content->getId()?>').val(c.y2);
            };

值c.*可以,但显然#x<?php echo $content->getId()?>不起作用。做这件事的正确方法是什么?当做

尝试混合php和javascript可能非常困难。原因是它们没有在同一时间或以相同的方式进行处理。PHP首先在服务器上进行处理,然后将处理结果发送到浏览器然后处理任何javascript。

此外,我不认为javascript中的php标记会被真正处理,但我对此并不100%确定。

可以做的一件事(但通常看起来很难看)是使用php来实际创建javascript。例如:

echo '<script type="text/javascript">';
echo 'function updateCoords(c) {';
echo '    $(''#x' . $content->getId() . ''').val(c.x);';
...
echo '}';
echo '</script>';

就像我说的,它看起来很难看,所以我并不推荐它,但它实际上应该像你想要的那样工作。

我也一直设置onChange事件。这有帮助吗?

$('#jcrop_target_id<?php echo $content->getId()?>').Jcrop({
    onSelect: updateCoords,
    onChange: updateCoords
});