Filemaker, PHP和jquery >显示隐藏元素


Filemaker, PHP and jquery > show hide elements

我正在从我的filemaker记录中返回一个表单(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格式出现在下一页。

我希望不必抓住复选框的值作为一个数组,然后使用get方法与100的if语句,但不能看到另一种方式?

使用的jquery。

$(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";}

从表单中获取新值。

这一切都工作得很好,但后来我在文件制作器中编写了一个脚本,以使每个复选框状态的不同名称的to和from。

为本部分的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多个。

我不是100%确定你要做什么,但这应该工作。首先添加一个额外的div来关闭输入和div图片,如下所示。

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

然后把你的Java改成这个

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

我希望这对你有帮助

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

If ( checkbox; imageField )

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

注意:为了提高性能,您可以尝试将此计算容器字段存储和非存储。我怀疑已存储的和未存储的应该没有什么区别,在这种情况下,我建议保持未存储,以尽量减少磁盘空间的消耗。

您可以使用toggle()函数:

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