Я повторяю форму (foreach) из моих записей создателя файла, в результате чего появляется идентификатор элемента, имя, флажок, а затем изображение.
В моем понимании мне придется использовать классы или элементы будут иметь одинаковый идентификатор.
Мой код;
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 с сотнями операторов 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();
});
});
Плюс много похожих альтернатив.
Есть что-то очевидное, чего мне не хватает?
Я изменил поле пути на вычисленное значение, которое прекрасно работает, спасибо, хотя с тысячами записей мне понадобится много 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 полей использовалось 120 в filemaker и 400 плюс в php.
Я не уверен на 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 '"'.$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>';
}
тогда поменяй свою яву на эту
$(document).ready(function() {
$(".pics").hide();
$(".check").click(function() {
$(this).siblings().toggle();
});
});
ну, я надеюсь, это поможет
Другой альтернативой может быть установка простого вычисляемого поля контейнера в FileMaker с вычисленным значением:
If ( checkbox; imageField )
Это будет только передать изображение, когда флажок был отмечен для записи. Это должно быть быстрее, чем обрабатывать это в JavaScript, так как вы будете ограничивать количество изображений, отправляемых по проводам.
Примечание. Для повышения производительности вы можете попробовать это с этим вычисленным полем контейнера, сохраненным и не сохраненным. Я подозреваю, что сохраненный v без сохранения не будет иметь большого значения, и в этом случае я бы предложил оставить его без хранения, чтобы минимизировать использование дискового пространства.
Вы можете использовать toggle()
функция:
$(function() {
$('.pics').hide();
$(".check").is(':checked',function(e) {
e.preventDefault();
$('.pics').toggle();
});
});