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";}
这会从表单中获取新值。
这一切都很好,但后来我也在 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 多个。
您可以使用toggle()
功能:
$(function() {
$('.pics').hide();
$(".check").is(':checked',function(e) {
e.preventDefault();
$('.pics').toggle();
});
});
另一种方法是在 FileMaker 中设置一个简单的计算容器字段,计算值为:
If ( checkbox; imageField )
这只会在勾选记录复选框时传递图像。这应该比 JavaScript 中的处理速度更快,因为您会限制通过线路发送的图像数量。
注意:为了提高性能,您可以尝试使用已存储和未存储的计算容器字段。我怀疑 stored v unstored 应该没什么区别,在这种情况下,我建议保留此 unstored 以最大程度地减少磁盘 space 消耗。
我不是 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 记录中回显一个表单 (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";}
这会从表单中获取新值。
这一切都很好,但后来我也在 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 多个。
您可以使用toggle()
功能:
$(function() {
$('.pics').hide();
$(".check").is(':checked',function(e) {
e.preventDefault();
$('.pics').toggle();
});
});
另一种方法是在 FileMaker 中设置一个简单的计算容器字段,计算值为:
If ( checkbox; imageField )
这只会在勾选记录复选框时传递图像。这应该比 JavaScript 中的处理速度更快,因为您会限制通过线路发送的图像数量。
注意:为了提高性能,您可以尝试使用已存储和未存储的计算容器字段。我怀疑 stored v unstored 应该没什么区别,在这种情况下,我建议保留此 unstored 以最大程度地减少磁盘 space 消耗。
我不是 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();
});
});
好的,希望对您有所帮助