首页 文章

Filemaker,PHP和jquery> show hide元素

提问于
浏览
0

我正在回复我的文件制作者记录中的表单(foreach),这将导致项目ID,名称,复选框和图像 .

根据我的理解,我将不得不使用类或元素都将具有相同的ID .

我的守则;

foreach($result->getRecords() as $record){
$id = $record->getField('Record_ID_PHP');
$name = $record->getField('DB_Name');
$pic = $record->getField('Photo_Path');
echo '"'.$id.'"<br>';
echo $name.'<br>';
echo '<input type="checkbox" class="check" value="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'">';
echo '<div class="pics">';
echo '<img style="width:200px;" src="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'"><br>';
echo '<hr>';
echo '</div>';
}

这导致页面中的记录,复选框和相关图像 .

我希望只在选中复选框但是找不到解决方案时显示这些图像,我尝试了很多jquery脚本,但无济于事 .

然后,图像将填充下一页作为要打印的pdf .

我希望不必将复选框的值作为一个数组来获取,然后使用带有100的if语句的get方法,但是看不到另一种方法?

jquery ive使用过 .

$(document).ready(function () {
$('.pics').hide();
$('.check').click(function () {
    $('pics').show;
});
$('.pics').hide;
});

$(function()   {
$(".check").click(function(e) {
    e.preventDefault();
    $('.pics').hide();
    $('.pics').show();
});
});

加上许多类似的替代品

有什么东西显而易见吗?

查询filemaker方法;

我已经将路径字段更改为计算出来的值很好,谢谢,虽然有1000条记录,我需要大量的PHP代码来回显网站的复选框以及更多能够从网站上编辑它们 .

我之前使用filemaker中的复选框中保存的值完成了此操作 .

$sesame = $print->getField('Allergens::Allergens[11]'); if ($sesame == "Sesame") { $sesame = "checked" ;} else if ($sesame !== "Sesame") {$sesame = "" ;}

这将显示与filemaker同步的复选框 .

if ($_POST['Sesame'] == 'Sesame'){ $a_sesame = 'Sesame';} else { $a_sesame = 'No Sesame'; }

这是作为变量发送到我的脚本 .

if($a_sesame == "Sesame"){$contains_sesame = "Yes";} else { $contains_sesame = "No";}

这从表单中获取新值 .

这一切都很好,但后来我也在filemaker中编写一个脚本,以便为每个复选框状态启用和来自不同的名称 .

对于这部分120行,这是一个样本,我必须重复该字段的每次重复 .

Set Variable [ $sesame; Value:GetValue ( Get ( ScriptParameter ) ; 11 ) ] 
If [ $sesame = "Sesame" ]
Set Field [ Allergens::Allergens[11]; "Sesame" ] Commit Records/Requests
[ Skip data entry validation; No dialog ] 
Else If [ $sesame = "No Sesame" ]
Clear [ Allergens::Allergens[11] ] [ Select ]
Commit Records/Requests
[ Skip data entry validation; No dialog ]
Refresh Window
[ Flush cached join results; Flush cached external data ]
End If

这对于如此多的记录来说太大了,只是这14个字段在filemaker中使用了120个,在php中使用了400个以上 .

3 回答

  • 0

    我不是100%肯定你想要做什么,但这应该有效 . 首先添加一个额外的div来关闭输入和div pics,如下所示 .

    foreach($result->getRecords() as $record){
    $id = $record->getField('Record_ID_PHP');
    $name = $record->getField('DB_Name');
    $pic = $record->getField('Photo_Path');
    echo '"'.$id.'"<br>';
    echo $name.'<br>';
    echo '<div>"; // new dive to add
    echo '<input type="checkbox" class="check" value="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'">';
    echo '<div class="pics">';
    echo '<img style="width:200px;" src="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'"><br>';
    echo '<hr>';
    echo '</div>'; // new div
    echo '</div>';
    }
    

    然后将你的java更改为此

    $(document).ready(function() {
    $(".pics").hide();
    $(".check").click(function() {
        $(this).siblings().toggle();
    });
    });
    

    我希望这会有所帮助

  • 0

    另一种方法是在FileMaker中设置一个简单的计算容器字段,其计算值为:

    If ( checkbox; imageField )
    

    这只会在为记录勾选复选框时传递图像 . 这应该比在JavaScript中处理这个更快,因为你将限制通过网络发送的图像数量 .

    注意:为了提高性能,您可以尝试使用存储和未存储的计算容器字段 . 我怀疑存储的v unstored应该没什么区别,在这种情况下我建议保留这个未经存储以最小化消耗的磁盘空间 .

  • 0

    您可以使用 toggle() 函数:

    $(function()   {
      $('.pics').hide();
    
      $(".check").is(':checked',function(e) {
        e.preventDefault();
        $('.pics').toggle();
       });
    
    });
    

相关问题