【问题标题】:Filemaker, PHP and jquery > show hide elementsFilemaker、PHP 和 jquery > 显示隐藏元素
【发布时间】:2015-08-26 00:23:10
【问题描述】:

我正在从我的文件制作者记录中回显一个表单 (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-&gt;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 中编写了一个脚本,以启用每个复选框状态的不同名称的 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 个以上。

【问题讨论】:

  • 它现在有什么行为?客户端的 html 是否正确?
  • 目前我有两种状态,.change 代码可以工作,但会扩展所有 div,is(':checked') 方法什么也不做。 html很好,只是在选中复选框时不显示隐藏

标签: javascript php jquery checkbox filemaker


【解决方案1】:

我不是 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();
   });
});

我希望这会有所帮助

【讨论】:

  • 工作得很好,谢谢!
【解决方案2】:

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

If ( checkbox; imageField )

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

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

【讨论】:

    【解决方案3】:

    您可以使用toggle()函数:

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

    【讨论】:

    • 它们已成功隐藏,jquery 已将 display:none 应用于 div 但它们不会重新出现?不是切换、显示、淡入淡出等...我只是看不出这里有什么问题?
    • 好的,谢谢,使用这个$(".check").change(function(e) { e.preventDefault(); $('.pics').toggle(); }); edit,这显示了所有的div而不是单个的div。 .is (':checked') 没有播放
    猜你喜欢
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多